Golang 基础知识
一, 运行
1.go run hello.go 直接运行 go 文件
2.go build hello.go 编译 hello.go, 产生二进制可执行文件
3.go install hello.go 编译产生二进制文件, 并且将其移动到 GOPATH 的 bin 目录下, 在任何的目录下都可执行该文件
二, 变量
声明方法:
Var 变量名类型 = 值 // 声明时复制
Var 变量名 = 值 // 不声明类型, 编译器自己推出变量类型
Var 变量类型 变量 = 值 // 声明后再赋值
速记声明 变量名:= 值 // 速记声明 左边至少有一个是新变量, 且不能作为全局变量
_,b = 5,7 // 空白标识符用于抛弃值, 如左边, 5 被抛弃
三, 数据类型
bool 类型: true 或 false
有符号整型: uint8,uint16,uint32,uint64,uint
无符号整型: int8,int16,int32,int64,int
浮点型: float32,float64
复数型: complex64,complex128
特殊: type(uint8 的别称),rune(int32 的别名)
字符型: string
派生类型: 指针, 数组, 结构体, Channel, 函数, 切片, 接口, Map
类型转换: T(v)将 v 转换为 T 值 //Go 中没有隐式转换
常量: 只能是布尔型, 数字和字符串, 且被 const 修饰的常量不能被更改
常量定义格式: 跟变量格式一样, 将 var 换成 const 即可 // 如 const PI float=3.14
高级知识点:
1. 常量可以用 len(),cap(),unsafe.Sizeof()函数计算表达式的值
2. 字符串在 go 中是个结构, 包含指向底层数组的指针和长度, 每个部分 8 字节, 所以字符串类型大小为 16 字节
3.nusafe.sizeof()求的是传入类型的长度, int 8 字节, 指针 8 字节, string 16 个字节, 切片[ ]24 个字节(类型, 长度, 容量)
特殊常量: iota, 一个可以被编译器修改的常量, 在每一个 const 关键字出现时, 被重置为 0, 然后再下一个 const 出现之前, 每出现一次 iota, 其所代表的数字会自动增加 1.iota 可以被用作枚举.
四, Go 运算符
跟大多数语言一样, Go 运算符包括: 算数运算符, 关系运算符, 逻辑运算符, 位运算符, 赋值运算符, 其他运算符
五, Go 表达式
(一)if 条件语句
语法: if condition{ }else if{ }else { }
- #condition 是判断条件如果成立则执行, 即使 {
- } 里只有一条语句,{
- }也是必须的不可省略
- #If 还有个变体, if statement; condition{
- }. 先执行 statement, 在判断 condition.
(二)for 循环语句
语法: for initialisation;condition;post{ }
- #For 循环是 Go 中唯一的循环, 没有其他语言的 while 和 do while 语句
- #break 用于终止 for 循环, continue 用于终止本轮循环(继续下一轮)
- #initialsation 和 post 可以省略, 此时相当于 while 循环 // 如 for i<10 {
- }
- # 可以在 for 循环中平行声明和操作多个变量 // 如 for i,j,k:=1,2,3;i<10,j<10,k<10;i++,j++,k++{
- }
(三)switch 选择语句
语法: switch *{
- case *:
- case *:
- default:
- }
- #switch 语句用于基于不同条件执行不同动作, 每个 case 分支都是唯一的, 从上到下依次匹配, 直到匹配成功为止. 匹配项后面也不用加 break 语句.
- # 可以在 case 中包含多个表达式, 用逗号隔开.
- #switch 中的表达式也是可选的, 如果没有表达式, 相当于 switch true, 每个 case 表达式的求值结果与 true 比较, 如果相等则执行 case 相应代码.
- #fallthrough 语句用于标明执行完当前 case 语句之后按照顺序执行下一个 case 语句, fallthrough 只可放于每个 case 最后一句.
六, 函数
函数声明语法: func functionname(paramername type)returntype{ }
- # 函数声明以 func 开头, 后面跟函数名字, 接着是传入的参数和类型, 多个参数以逗号隔开并 () 起来, 后面是返回值及类型, 多个返回值用逗号隔开并 () 起来, 参数和返回值都是可选的.
- # 可以给返回值指定名字, 如果指定返回值名字则视为在函数第一行定义了.
- # 空指示符(_), 它用于代替任何类型的任何值, 当我们不需要某个返回值的时候用空指示符代替
- # 参数传递:
1. 值传递: 值传递将实际参数复制一份传递给函数, 函数修改参数时不影响实际参数
2. 引用传递: 将实际参数的地址传递给函数, 函数修改参数时实际参数也被修改
# 变量作用域:
1. 全局变量: 在函数外定义的变量, 可以在任何函数中使用
2. 局部变量: 在函数内定义的变量, 只能在函数中使用
3. 当全局变量与局部变量名称相同时, 函数内的变量优先考虑.
Golang 基础语法(一)
来源: http://www.bubuko.com/infodetail-3102176.html