当前位置: 首页 > news >正文

go-学习

文章目录

  • 简介
  • 标识符
  • 字符串的拼接,
  • 关键字
  • 数据类型
  • 声明变量
  • 常量
  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算
  • 赋值运算符
  • 其他运算符

简介

Go 语言的基础组成有以下几个部分:
1.包声明
2.引入包
3.函数
4.变量
5.语句 & 表达式
6.注释

package main
import "fmt"func main() {/* 这是我的第一个简单的程序 */fmt.Println("Hello, World!")
}
/*func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,
一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)*/

标识符

变量命名,
不能以数字开头;不能出现关键字;不能出现运算符;

字符串的拼接,

“+”,与java等语言相同

关键字

type,case,break,default,func,interface

数据类型

布尔类型:var b bool = true
数字类型:uint8,uint16,uint32,uint64,int8,float32,complex64
字符串类型
派生类型:
(a) 指针类型(Pointer)
(b) 数组类型
© 结构化类型(struct)
(d) Channel 类型
(e) 函数类型
(f) 切片类型
(g) 接口类型(interface)
(h) Map 类型

声明变量

1,指定变量类型,如果没有初始化,则变量默认为零值

var (  // 这种因式分解关键字的写法一般用于声明全局变量a intb bool
)var a string = "Runoob"
var b, c int = 1, 2
var b int		//默认变量为0

2,根据值自行判定变量类型

var v_name = value
var d = true

3,省略 var, 注意 := 左侧如果没有声明新的变量,就产生编译错误

//这种不带声明格式的只能在函数体中出现
f := "Runoob" // var f string = "Runoob"var intVal int 
intVal :=1 // 这时候会产生编译错误
intVal,intVal1 := 1,2 // 此时不会产生编译错误,因为有声明新的变量,因为 := 是一个声明语句

注意问题:
如果你想要交换两个变量的值,则可以简单地使用 a, b = b, a,两个变量的类型必须是相同。
_,numb,strs := numbers() //只获取函数返回值的后两个

常量

你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。

显式类型定义: const b string = "abc"
隐式类型定义: const b = "abc"

多个相同类型的声明可以简写为:

const a, b, c = 1, false, "str" //多重赋值

常量还可以用作枚举:

const (Unknown = 0Female = 1Male = 2
)

常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过:

const (a = "abc"b = len(a)c = unsafe.Sizeof(a)
)

iota,特殊常量,可以认为是一个可以被编译器修改的常量。

const (a = iotab = iotac = iota
)

第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;所以 a=0, b=1, c=2
可以简写为如下形式:

const (a = iotabc
)

实战

const (a = iota   //0b          //1c          //2d = "ha"   //d="ha",iota += 1e          //e="ha"   iota += 1f = 100    //f=100,iota +=1g          //g=100  iota +=1h = iota   //h=7,恢复计数i          //i=8
)
const (i=1<<iotaj=3<<iotakl
)
iota 表示从 0 开始自动加 1,所以 i=1<<0, j=3<<1<< 表示左移的意思),即:i=1, j=6,这没问题,关键在 k 和 l,从输出结果看 k=3<<2,l=3<<3。
简单表述:
i=1:左移 0,不变仍为 1;
j=3:左移 1,变为二进制 110,6;
k=3:左移 2,变为二进制 1100,12;
l=3:左移 3,变为二进制 11000,24

算术运算符

加 + ,减 - ,乘 *,除 /,余%,自增++,自减–

关系运算符

等于:==,不等于:!=,大于:>,小于:<,大于等于:>=,小于等于:<=

逻辑运算符

&&
||
!
逻辑运算符没有&和 |

位运算

&,|,^,<<,>>

赋值运算符

+=,<<=

其他运算符

&a; 将给出变量的实际地址。
*a; 是一个指针变量

http://www.lryc.cn/news/493117.html

相关文章:

  • 【面试分享】主流编程语言的内存回收机制及其优缺点
  • STM32-- 串口发送数据
  • 数据结构 (13)串的应用举例
  • qt-- - 版本和下载介绍
  • 解锁 Vue 项目中 TSX 配置与应用简单攻略
  • ShuffleNet:一种为移动设备设计的极致高效的卷积神经网络
  • yum源问题的解决方案
  • 在Linux中备份msyql数据库和表的详细操作
  • 实时数仓Kappa架构:从入门到实战
  • 【老白学 Java】Warship v2.0(四)
  • LLM之学习笔记(一)
  • C# 反射详解
  • pgadmin安装后运行不能启动界面的问题
  • 跳表(Skip List)
  • 前端实现把整个页面转成PDF保存到本地(DOM转PDF)
  • Vue 3 学习文档(一)
  • 【适配】屏幕拖拽-滑动手感在不同分辨率下的机型适配
  • 牛客周赛 Round 69(A~E)
  • Spring Boot 实战:分别基于 MyBatis 与 JdbcTemplate 的数据库操作方法实现与差异分析
  • 【jmeter】服务器使用jmeter压力测试(从安装到简单压测示例)
  • 使用Python实现自动化邮件通知:当长时程序运行结束时
  • 框架学习07 - SpringMVC 其他功能实现
  • NAT:连接私有与公共网络的关键技术(4/10)
  • RabbitMQ2:介绍、安装、快速入门、数据隔离
  • 衡山派D133EBS 开发环境安装及SDK编译烧写镜像烧录
  • 【Spring MVC】如何获取cookie/session以及响应@RestController的理解,Header的设置
  • C++设计模式行为模式———策略模式
  • Spring Cloud 中 bootstrap.yml 配置文件详解
  • Java项目实战II基于SpringBoot前后端分离的网吧管理系统(开发文档+数据库+源码)
  • ASP网络安全讲述