交叉编译
- 在mac上编译64位linux, Windows的命令编译命令
# Linux
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build filename.go
# Windows
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build filename.go
#如: CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o helloworld-windows helloworld.go
- 在windows 上编译64位linux的命令编译命令
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ./main ./main.go
- Linux下编译Mac, Windows
# Mac
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build filename.go
# Windows
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build filename.go
逃逸分析
go build -gcflags='-m' . 2>&1
# reservation
.\main.go:39:12: inlining call to log.Error
.\main.go:39:12: inlining call to zerolog.(*Logger).Error
.\main.go:47:11: inlining call to sync.(*Once).Do
.\main.go:47:12: can inline (*program).Stop.func1
.\main.go:69:13: inlining call to fmt.Println
.\main.go:58:12: inlining call to log.Error
.\main.go:58:12: inlining call to zerolog.(*Logger).Error
.\main.go:20:7: p does not escape
.\main.go:20:24: env does not escape
