go基础笔记
作者:
Jason-sun
,
2021-12-09 17:47:16
,
所有人可见
,
阅读 258
golang cmd 说明
- gofmt 格式化代码
- go run 编译并直接运行程序,它会产生一个临时文件(但不会生成 .exe 文件),直接在命令行输出程序执行结果
- go build 用于测试编译,检查编译阶段的错误,若为main.go则生成可执行二进制文件
go build -race go test -race提供一种竞争检测机制
- go install 1.将包导入后编译。2.若为可执行文件放入Bin目录下,若为程序放入pkg下
- go doc|godoc -http=:6000
1.go doc package function 查询src下的代码注解
2.godoc -http=:6000 通过web界面访问
- go env go语言环境配置信息
go slice
- make([]type,len,cap) 其中len最好指定为0
- len() cap() 返回切片的存储数据个数与容量
- append(slice,不定长参数…)
- append(slice1,slice2)
- cope(dis,src) 会更具最小的确定
go map
- make(map[type]type,cap)
- delete(map,key)
- value , ok := map[key]
go 匿名函数与闭包
f := func(){
}
a := func(){
}(some)
go是值传递还是参数传递
- go 为值传递,但对于[]type、map[]、channel、interfece为封装了一层的type
- go 中对指针方法还是对象方法有区分,只有指针方法能修改对象的状态
go的结构体初始化
- new(type) 使用默认值创建 注意nil
- &Rect{}方法
- NewRect()方法创建
go 匿名组合
type Base struct {
Name
}
type Foo struct {
...
Base
}
- go 通过组合实现继承,实质是被组合的类型所含的方法升级成外部这个类型的方法
go可见性
- 通过大小写将结构体可见性标识
- 通过大小写将方法标识
- 控制粒度为包可见
go接口
- go语言中只要类实现了接口的所有方法就实现了接口,不需在定义时先提前定义接口,直接按需定义。接口或者实例的依赖是通过业务的确定性划分
- 指针对象可以调用类的指针方法和非指针方法
- 接口的赋值
1)将实例赋值给接口(实例至少实现了接口的方法)
2)将一个接口赋值给另一个接口(接口间的集合关系,相等 包含是通过需要实现的方法确定的)
- 接口强制转化
- 接口组合 go中通过接口组合可以做组合接口的所有任务
- 空接口 interface{}所有对象的实例都满足空接口,函数可以接收人意类型时用空接口
go类型查询
var v2 = interface{} = ...
switch v := v1.(type) {
case int :
case string :
}