go语言项目构建与编译雏形
目录
目录结构
一个Go工程中主要包含以下三个目录:
在GOPATH
src:源代码文件
pkg:包文件
bin:相关bin文件
一步步构建编译
- 1.建立工程文件夹 go
$ pwd
/Users/***/Desktop/go
- 2: 在工程文件夹中建立src,pkg,bin文件夹
$ ls
bin conf pkg src
- 3: 在GOPATH中添加projiect路径
$ go env
GOPATH="/Users/xxxx/Desktop/go"
- 4: 那在src文件夹下建立以自己的包 example 文件夹
$ cd src/
$ mkdir example
-
5:在src文件夹下编写主程序代码代码 goproject.go
-
6:在example文件夹中编写 example.go 和 包测试文件 example_test.go 做单元测试
example.go 写入如下代码:
package example func add(a, b int) int { return a + b } func sub(a, b int) int { return a - b }
example_test.go 写入如下代码:
package example import ( "testing" ) func TestAdd(t *testing.T) { r := add(2, 4) if r != 6 { t.Fatalf("add(2, 4) error, expect:%d, actual:%d", 6, r) } t.Logf("test add succ") }
-
7:编译调试包
$ go build example $ go test example ok example 0.013s $ go install example $ ls /Users/***/Desktop/go/pkg/ darwin_amd64 $ ls /Users/***/Desktop/go/pkg/darwin_amd64/ example.a
-
8:编译主程序
oproject.go 写入如下代码:
package main import ( "fmt" ) func main(){ fmt.Println("helo, golang") }
$ go build goproject.go $ ls example goproject.go goproject
成功后会生成goproject文件,至此一个Go工程编辑成功。
-
运行该文件
$ ./goproject helo, golang
更多编译问题
- 编译理解
系统编译时 go install abc_name时,系统会到GOPATH的src目录中寻找abc_name目录,然后编译其下的go文件;
golang的编译使用命令 go build , go install,除非仅写一个main函数,否则还是准备好目录结构。
GOPATH=工程根目录,其下应创建src,pkg,bin目录,bin目录中用于生成可执行文件,pkg目录中用于生成.a文件。
golang中的import name,实际是到GOPATH中去寻找name.a, 使用时是该name.a的源码中声明的package 名字。