2017年2月

macOS 下编译 Linux 和 Win 64位可执行程序

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

Linux 下编译 macOS 和 Win 64位可执行程序

CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

Windows下编译 macOS 和 Linux 64位可执行程序

SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build main.go
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go

查看执行程序当前路径

file, _ := exec.LookPath(os.Args[0])
path, _ := filepath.Abs(file)
println(path)

Byte2String

func B2S(buf []byte) string {
    return *(*string)(unsafe.Pointer(&buf))
}

String2Byte

func S2B(s *string) []byte {
    return *(*[]byte)(unsafe.Pointer((*reflect.SliceHeader)(unsafe.Pointer(s))))
}