go modules——HelloWorld示例

go modules——HelloWorld示例

  • go modules 存在的意义是方便代码的共享(虽然这会使本身开发过程当中有一些小小的麻烦)git

  • 开发第一步,建立一个github仓库,而后克隆到本地github

    首先建立一个github仓库github.com/<username>/hello,这里个人仓库地址是:github.com/fudute/hellogolang

    而后在本地拉取远程仓库:shell

    git clone https://github.com/fudute/hello.git
    cd hello
  • 建立一个modulebash

    go mod init github.com/fudute/hello

    注意这里的后缀要和github的网址一致函数

    这会在当前目录下建立一个go.mod文件,表示这是一个module。测试

    而后建立一个文件hello.go:优化

    package hello
    
    // Hello return "Hello World"
    func Hello() string {
        return "Hello World!"
    }

    和测试文件hello_test.gocode

    func TestHello(t *testing.T) {
    	tests := []struct {
    		name string
    		want string
    	}{
    		{name: "test", want: "Hello world!"},
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    			if got := Hello(); got != tt.want {
    				t.Errorf("Hello() = %v, want %v", got, tt.want)
    			}
    		})
    	}
    }

    如今进行测试:开发

    > go test
    PASS
    ok  	example.com/hello	0.002s

    说明功能没有问题,这时候就能够准备提交了。可是在提交以前,还存在一个版本问题

  • module的版本问题

    版本的命名方式为 vMAJOR.MINOR.PATCH,有下面这些规则:

    • 当API发生向后不兼容的修改时,例如删除某个API函数,这时候须要修改MAJOR版本号
    • 当API发生向后兼容的修改是,例如添加API函数,这时候须要修改MINOR版本号
    • 当API没有发生修改,只是作了bug修复或者优化,这时候须要修改PATCH就能够
    • v0版本是不稳定版本,这个阶段可能发生各类修改,是开发时的版本。若是以为开发的已经足够完善,那么就能够提升到v1版本,表示这是一个相对稳定的版本。
  • 将module push到github上

    先提交当前目录下的文件:

    git add *
    git commit -m "my first module"

    须要先给module添加一个版本标记,指定版本为 v0.1.0

    git tag v0.1.0

    而后push到github上

    git push origin v0.1.0
  • 建立另外一个项目,使用以前的module

    接下来在本地建立一个main module

    mkdir main
    cd main
    go mod init main

    建立文件main.go

    package main
    
    import (
    	"fmt"
    
    	"github.com/fudute/hello"
    )
    
    func main() {
    	fmt.Println(hello.Hello())
    }

    在这里导入了以前建立的module,路径是github.com/fudute/hello,而后直接运行:

    > go run .
    go: extracting github.com/fudute/hello v0.1.0
    Hello World!

    能够看到,golang会自动从github上拉取module,而后成功编译运行。

    自动下载的module能够在$GOPATH/pkg/mod目录下看到。

相关文章
相关标签/搜索