- 切片
- 哈希表
- 字符串
- 插件
- 包管理
- Gin框架
- 并发
- 命令行参数
- 单元测试
- 覆盖率
- 性能测试
- 首字母大写的函数才能被其他包引用到。
- string是不可变的,想要修改string,先转换为[]byte。
- go的动态库是编译成插件。
- golang中不存在while循环,使用for循环代替。
- rune可变,按照unicode输出。byte可变,按照utf-8输出。string不可变,当使用range遍历时,自动转换为[]rune。
- go语言中的switch-case在进入case语句后直接退出,不需要break,而C/C++语言中会继续向下执行。
go build -buildmode=plugin plugin.go
# 生成二进制文件
go build main.go
# 运行测试
go test hello_test.go
# 编译并运行
go run hello.go
- 从module名开始,到包名。
- 实际调用的时候要跟上包名。
import "yaojungo/mypkg"
mypkg.CustomPkgFunc()
go get -u github.com/gin-gonic/gin
cd mygin
go run main.go
# 服务启动后点击这个链接 http://127.0.0.1:8080/hello
- 可以动态分配大小的连续空间,类似于C++中的vector。
- 切片的传参是传值还是传引用?传引用,修改生效,新增无效。
- make是用来初始化map,slice,chan的。
- new是用来创建对象的。
package main
import "fmt"
func main(){
var a = new(int) // 得到一个int类型的指针
*a = 10
fmt.Println(*a)
var c = new([10]int) // 创建一个数组
c[0] = 11
for _, v:= range c{
fmt.Println(v)
}
}
s[i], s[j] = s[j], s[i]
go test -bench .
go test -cover