Go包管理

PATH配置&&GO命令

PATH
一个是 go的安装path ——GOROOT。
一个是 go的工作目录path —GOPATH。此PATH的目的是方便使用go命令操作编译安装。

export GOROOT=/usr/local/go

export PATH=$PATH:$GOROOT/bin

export GOPATH=/Users/didi/GoProject

export PATH=$PATH:$GOPATH/bin

比如现在的工作目录GoProject结构是

├── bin
├── pkg
└── src
    └── github.com
        └── wangziwei
            └── hello
                └── helloworld.go

那么直接运行 go install github.com/wangziwei/hello/ 则直接生成了二进制可执行文件hello 到 bin下。运行后目录结构如下:

├── bin
│   └── hello
├── pkg
└── src
    └── github.com
        └── wangziwei
            └── hello
                └── helloworld.go

注意一点是:
生成可执行的文件 得有main() 函数 + go install 命令 + 文件中 package main。
(如下:test.go 中 package main)
生成包对象 不需要main() + go install 命令 + 文件中 package 写路径。
(如下:helloworld.go 中 package hello)
go install github.com/wangziwei/hello 编译后 pkg 目录出现hello对象 hello.a。
go install github.com/wangziwei/test 执行后 bin 目录出现test 可执行文件。

├── bin
│   └── test
├── pkg
│   └── darwin_amd64
│       └── github.com
│           └── wangziwei
│               └── hello.a
└── src
    └── github.com
        └── wangziwei
            ├── hello
            │   └── helloworld.go
            └── test
                └── test.go

Go的可执行命令是静态链接的;在运行Go程序时,包对象无需存在。
链接成单个二进制文件的所有包,其包名无需是唯一的,只有导入路径(它们的完整文件名) 才是唯一的。

GO测试

  1. 测试文件和需要测试的包文件放一个路径下
  2. 测试文件 命名格式为 *_test.go
└── src
    └── github.com
        └── wangziwei
            ├── hello
            │   ├── helloworld.go
            │   └── helloworld_test.go

  1. import testing + (t *testing.T)参数 + t.Errorf 显示
package hello
  
import "testing"

func TestReverse(t *testing.T) {
        cases := []struct {
                in, want string
        }{
                {"Hello, world", "dlrow ,olleH"},
                {"Hello, 世界", "界世 ,olleH"},
                {"", ""},
        }
        for _, c := range cases {
                got := PrintHello(c.in)
                if got != c.want {
                        t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)
                }
        }
}
  1. 最后执行 go test github.com/wangziwei/hello 就可以看测试结果了

go 工具使用远程代码库

go 包注释

每个包都应包含一段包注释,即放置在包子句前的一个块注释。对于包含多个文件的包, 包注释只需出现在其中的任一文件中即可。
godoc是一个专门的web服务器。提取注释文字的。

你可能感兴趣的:(Go包管理)