Golang 交叉编译

Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序。

Mac 下编译 Linux 和 Windows 64位可执行程序
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

Linux 下编译 Mac 和 Windows 64位可执行程序
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

Windows 下编译 Mac 和 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

GOOS:目标平台的操作系统(darwin、freebsd、linux、windows)
GOARCH:目标平台的体系架构(386、amd64、arm)
交叉编译不支持 CGO 所以要禁用它

beego框架使用bee交叉编译linux执行文件命令

bee pack -be GOOS=linux -be GOARCH=amd64

golang非常好用gjson库-解析字符串json

再也不用苦苦的转换成map[string]interface{}

GJSON是一个Go包,它提供了一种快速,简单的方法来从json文档中获取值。它具有诸如单行检索,点符号路径,迭代和解析json行之类的功能。

package main

import "github.com/tidwall/gjson"

const json = `{"name":{"first":"Janet","last":"Prichard"},"age":47}`

func main() {
    value := gjson.Get(json, "name.last")
    println(value.String())
}

打印:

Prichard

https://github.com/tidwall/gjson