Go语言编程笔记--管理工具

Go 命令行工具 (Gotool)

 go version

 go help
 
         build compile packages and dependencies
         clean remove object files
         doc run godoc on package sources
         fix run go tool fix on packages
         fmt run gofmt on package sources
         get download and install packages and dependencies
         install compile and install packages and dependencies
         list list packages
         run compile and run Go program
         test test packages
         tool run specified go tool
         version print Go version
         vet run go tool vet on packages 

Gotool可以帮你完成以下这几类工作:

 代码格式化
 代码质量分析和修复
 单元测试与性能测试
 工程构建
 代码文档的提取和展示
 依赖包管理
 执行其他的包含指令,比如6g等

2 代码风格

格式化功能美化一下 go fmt hello.go

3 远程 import 支持

package main
import (
 "fmt"
 "github.com/myteam/exp/crc32"
) 

go get github.com/myteam/exp/crc32 

执行完 go get 之后,我们会在 src 目录中看到 github.com 目录,其中包含 myteam/exp/crc32目录。

在crc32中,就是该包的所有源代码。也就是说,go工具会自动帮你获取位于远程的包源码,在随后的编译中,也会在pkg目录中生成对应的.a文件。

4 工程组织

GOPATH

能定位到对应的源代码, 可以在任意位置对 工程进行构建

export GOPATH=~/work/go-proj1:~/work2/goproj2:~/work3/work4/go-proj3 

目录结构

<calcproj>
    ├─README
    ├─AUTHORS
    ├─<bin>
         ├─calc
    ├─<pkg>
         └─<linux_amd64>
         └─simplemath.a
    ├─<src>
         ├─<calc>
             └─calc.go
         ├─<simplemath>
             ├─add.go
             ├─add_test.go
             ├─sqrt.go
             ├─sqrt_test.go 

一个标准的Go语言工程包含以下几个目录:srcpkgbin

目录src用于包含所有的源代码,是Gotool一个强制的规则,

而pkg和bin则无需手动创建,如果必要Gotool在构建过程中会自动创建这些目录

#### 5 跨平台编译

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)

6 go buildgo install

 go build : 编译出可执行文件
 
 go install : go build + 把编译后的可执行文件放到GOPATH/bin目录下
 
 go get : git clone + go install
Buy me a 肥仔水!