androidapachebackendcentoscommandcomposercrontabcurldesigndevelopdockerelasticfinancingfirewallfrontendgitgolanghybridiisiptablesjavajenkinskuberneteslaravelluamacmemcachemigrationmongodbmysqlnginxnodejsofficeopensslperformancephpredisregexprestfulsecurityshellsnippetsshstartupteamtraintravelunitvmwarevsftpwindowsworkwwwyaf

GoLang

环境变量

GOROOT

golang 安装路径

GOPATH

golang 工作目录,允许多个目录,使用 [;] 分隔

~/.bash_profile
export GOPATH=$HOME/workspace/go

~/.bash_profile
export GOPATH=%USERPROFILE%\go;E:\Works\Go

GOBIN

go install 编译存放路径,不允许多个目录

常用命令

build: 编译包和依赖
clean: 移除对象文件
doc: 显示包或者符号的文档
env: 打印go的环境信息
bug: 启动错误报告
fix: 运行go tool fix
fmt: 运行gofmt进行格式化
generate: 从processing source生成go文件
get: 下载并安装包和依赖
install: 编译并安装包和依赖
list: 列出包
run: 编译并运行go程序
test: 运行测试
tool: 运行go提供的工具
version: 显示go的版本
vet: 运行go tool vet

编译选项

$GOOS      $GOARCH
android    arm
darwin     386
darwin     amd64
darwin     arm
darwin     arm64
dragonfly  amd64
freebsd    386
freebsd    amd64
freebsd    arm
linux      386
linux      amd64
linux      arm
linux      arm64
linux      ppc64
linux      ppc64le
linux      mips
linux      mipsle
linux      mips64
linux      mips64le
netbsd     386
netbsd     amd64
netbsd     arm
openbsd    386
openbsd    amd64
openbsd    arm
plan9      386
plan9      amd64
solaris    amd64
windows    386
windows    amd64

$ SET CGO_ENABLED=0
$ SET GOOS=linux
$ SET GOARCH=amd64
$ go build test.go

项目结构

myproject
|-- bin
|   +-- myapp
|-- pkg
|   +-- linux_amd64
|       +-- mylib.a
+-- src
    |-- myapp
    |   +-- myapp.go
    +-- mylib
        +-- logger.go

生成 Windows exe 图标

安装 rsrc

go get github.com/akavel/rsrc

创建 main.exe.manifest 文件

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="x86"
    name="controls"
    type="win32"
></assemblyIdentity>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="*"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        ></assemblyIdentity>
    </dependentAssembly>
</dependency>
</assembly>

生成 syso 文件

rsrc -manifest main.exe.manifest -ico main.ico -o main.syso

编译生成 main.exe

# 指定输出文件
go build -o main.exe

# 带编译选项,-s 去掉符号信息,-w 去掉DWARF调试信息
go build -o main.exe -ldflags "-s -w"

GoLang 包管理工具 dep

dep 安装

go get -u github.com/golang/dep/cmd/dep

dep 使用

#进入项目,需要确包含在 $GOPATH 中
cd /home/gopath/src/demo

#dep初始化,初始化配置文件Gopkg.toml
dep init

#dep加载依赖包,自动归档到vendor目录
dep ensure

dep 生成文件

Gopkg.lock 是生成的文件,不要手工修改
Gopkg.toml 是依赖管理的核心文件,可以生成也可以手动修改
vendor 目录是 golang1.5 以后依赖管理目录,这个目录的依赖代码是优先加载的

无法下载 golang.org/x/ 库时,使用代理

# 查找代理端口号
netstat -ano

# 使用 shadowsocks 代理
set http_proxy=127.0.0.1:1080
set https_proxy=127.0.0.1:1080

# 或使用 GOPROXY 代理服务
set GOPROXY=https://goproxy.io

相关链接