如何正确设置 Golang 库?

我试过很多次用模块系统设置一个真正的 go 包并将代码存储在pkg. 我找到的所有教程都太基础了,在顶层创建一个带有 go 文件存储的模块,我不断地学习no Go files in /usr/local/go/github.com/me/mypackage。


我尝试了很多不同的东西,但我无法让它正常工作......


GOROOT设置为/usr/local/go。我在这里创建了一个包/usr/local/go/github.com/me/mypackage。


go.mod


module github.com/me/mypackage


go 1.18

pkg/main.go


package mypackage


// Add is our function that sums two integers

func Add(x, y int) (res int) {

    return x + y

}


// Subtract subtracts two integers

func Subtract(x, y int) (res int) {

    return x - y

}

pkg/main_test.go


package mypackage


import "testing"


func TestAdd(t *testing.T){


    got := Add(4, 6)

    want := 10


    if got != want {

        t.Errorf("got %q, wanted %q", got, want)

    }

}

我跑:go test


我究竟做错了什么?我发现 Go 的设置非常令人沮丧,因为像 Rust 和 NodeJS 这样的语言/运行时具有非常友好的包管理器并且非常容易设置。


我正在尝试按照本 guidance for structuring go packages中的描述构建一个库。


长风秋雁
浏览 79回答 1
1回答

慕工程0101907

不要混淆模块和包。一个模块可能包含多个包。像这样:模块目录/package1_dir模块目录/package2_dir试试这个布局:存储库:github.com/me/mymodulemymodule/mypkgmymodule/mypkg/mypkg_test.gomymodule/mypkg/mypkg.gomymodule/go.mod在mypkg.go并mypkg_test.go声明package mypkg。否则,运行此脚本,它将为您创建正确的布局:https://gist.github.com/udhos/695d3be51fb4c7d151b4e252cdec3c63
打开App,查看更多内容
随时随地看视频慕课网APP