目录

目录结构

一个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 名字。