Go语言简明知识点
一个下午学会go语言的主要知识点。😋
go的语法规范
The Go Programming Language Specification
Go的环境变量
GOROOT
go的安装路径
GOPATH
go的工作目录
GOBIN
go生成可执行程序的路径
一般来说,go的源码需要被放在GOPATH的某个src路径下。
go的常用指令
go build
编译go代码,在编译过程中,会编译相关的包。
go clean
清除编译,测试或安装程序产生的文件。
go get
拉取代码包并安装。
go install
编译出的中间文件放在pkg,可执行文件放在bin下。
go run
直接运行main函数。
go test
执行单元测试。
访问权限
首字母大写的类,变量,方法等可以被包外的代码使用,否则只能被包内的其他代码使用。 使用internel包可以创建模块级别的私有访问权限。
声明变量
var name string // 指定类型
name := "hello" //自动推导类型
判断变量的类型
value, ok := interface{}(mylist).([]int)
string,[]byte和[]rune
string就是一个8位字节的不可变序列
[]byte 本质上是 []uint8
[]rune 本质上是 []int32
数组和切片
数组array长度固定,切片slice可变长
通过len可获取长度,通过cap获取容量。
因为切片可以向右扩展,使用[a:b]获取的slice的容量是原始slice容量减去左侧起始值。 > code
字典
golang中的字典是一个哈希表,其键的类型是受限的(不支持函数,字典,切片),但是元素的类型可以使任意的。因为键类型必须是可以施加操作符==和!=。
在一个为nil的map上,除了添加kv的时候,其他时候不会panic。
go channel
Don’t communicate by sharing memory; share memory by communicating.
go的channel是线程安全的,有带缓冲和不带缓冲的。当容量大于0时,就是带缓冲的通道。