How to use custom packages in Golang?
我正在尝试在Go中创建和使用自定义包。这可能是很明显的事情,但我找不到很多关于这方面的信息。基本上,我在同一个文件夹中有这两个文件:
百万富翁
1 2 3 4 5 | package mylib type SomeType struct { } |
主走
1 2 3 4 5 6 7 8 9 | package main import ( "mylib" ) func main() { } |
当我尝试
1 | main.go:4:2: import"mylib": cannot find package |
我尝试先运行
首先,一定要阅读并理解"如何编写代码"文档。
实际答案取决于您的"定制包"的性质。
如果它是通用的,考虑使用所谓的"Github代码布局"。基本上,您可以使您的库成为一个单独的
如果您的库是供内部使用的,您可以这样操作:
证明:
1 2 3 4 5 6 | src/ myproject/ mylib/ mylib.go ... main.go |
现在,在顶级的
对于这种文件夹结构:
1 2 3 | main.go mylib/ mylib.go |
最简单的方法是使用:
1 2 3 | import ( "./mylib" ) |
对于在Github上托管的项目,人们通常会这样做:
1 2 3 4 5 6 7 | github.com/ laike9m/ myproject/ mylib/ mylib.go ... main.go |
百万富翁
1 2 3 | package mylib ... |
主走
1 2 3 | import"github.com/laike9m/myproject/mylib" ... |
我是一个经验丰富的程序员,但是,刚进入围棋世界!我承认我几乎没遇到什么困难去理解…当我试图在子文件夹中组织我的go文件时,也遇到了同样的问题。我的做法是:
转到目录(分配给$gopath的目录)
1 2 3 4 5 6 | GO_Directory //the one assigned to $GOPATH __MyProject _____ main.go _____ Entites _____ Fiboo // in my case, fiboo is a database name _________ Client.go // in my case, Client is a table name |
在文件myprojectentitiesfibooclient.go上
1 2 3 4 5 6 | package Fiboo type Client struct{ ID int name string } |
在文件myprojectmain.go上
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | package main import( Fiboo"./Entity/Fiboo" ) var TableClient Fiboo.Client func main(){ TableClient.ID = 1 TableClient.name = 'Hugo' // do your things here } |
(我在Ubuntu 16.04上运行Go 1.9)
记住,伙计们,我是新来的。如果我做的是不好的练习,请告诉我!
另一个解决方案:将
然后,
包装词典
1 2 3 4 5 6 7 | type Analizador struct { } func main() { } |
恩拉克包装主体
1 2 3 4 | import ( "github.com/user/lexico ) |