我已經嘗試過多次使用模塊系統設定一個真正的 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 這樣的語言/運行時具有非常友好的包管理器并且非常容易設定。
我正在嘗試按照本指南中的描述構建一個庫,以構建 go packages。
uj5u.com熱心網友回復:
不要將模塊與包混淆。一個模塊可能包含許多包。像這樣:
- module_dir/package1_dir
- module_dir/package2_dir
試試這個布局:
存盤庫:github.com/me/mymodule
mymodule/mypkg
mymodule/mypkg/mypkg_test.go
mymodule/mypkg/mypkg.go
mymodule/go.mod
在mypkg.go并mypkg_test.go宣告package mypkg.
否則,運行此腳本,它將為您創建正確的布局:
https://gist.github.com/udhos/695d3be51fb4c7d151b4e252cdec3c63
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/463930.html
標籤:去
上一篇:當我將math.NaN()和math.MaxFloat64轉換為int時,為什么go1.14.2和go1.17.2的結果不同?
下一篇:在for回圈中創建和附加變數
