lau*_*ent 168 import package go
我正在尝试在Go中创建和使用自定义包.这可能是非常明显的事情,但我找不到太多关于此的信息.基本上,我在同一个文件夹中有这两个文件:
mylib.go
package mylib
type SomeType struct {
}
Run Code Online (Sandbox Code Playgroud)
main.go
package main
import (
"mylib"
)
func main() {
}
Run Code Online (Sandbox Code Playgroud)
当我尝试时go run main.go,我收到此错误:
main.go:4:2: import "mylib": cannot find package
Run Code Online (Sandbox Code Playgroud)
我试图先运行go build mylib.go但它似乎没有做任何事情(没有生成文件,没有错误信息).所以任何想法我怎么能这样做?
kos*_*tix 166
首先,请务必阅读并理解"如何编写Go代码"文档.
实际答案取决于"自定义包"的性质.
如果它是一般用途,请考虑采用所谓的"Github代码布局".基本上,您将库go get设为一个单独的项目.
如果您的库是供内部使用的,您可以这样:
展示:
src/
myproject/
mylib/
mylib.go
...
main.go
Run Code Online (Sandbox Code Playgroud)
现在,在顶级main.go,你可以import "myproject/mylib",它会工作正常.
lau*_*ent 64
对于这种文件夹结构:
main.go
mylib/
mylib.go
Run Code Online (Sandbox Code Playgroud)
最简单的方法是使用这个:
import (
"./mylib"
)
Run Code Online (Sandbox Code Playgroud)
对于在GitHub上托管的项目,以下是人们通常做的事情:
github.com/
laike9m/
myproject/
mylib/
mylib.go
...
main.go
Run Code Online (Sandbox Code Playgroud)
mylib.go
package mylib
...
Run Code Online (Sandbox Code Playgroud)
main.go
import "github.com/laike9m/myproject/mylib"
...
Run Code Online (Sandbox Code Playgroud)
我是一名经验丰富的程序员,但是,对 Go 世界还是很陌生!而且我承认我在理解 Go 方面遇到了一些困难......当我试图在子文件夹中组织我的 go 文件时,我遇到了同样的问题。我这样做的方式:
GO_Directory (分配给 $GOPATH 的那个)
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
Run Code Online (Sandbox Code Playgroud)
在文件 MyProject\Entities\Fiboo\Client.go
package Fiboo
type Client struct{
ID int
name string
}
Run Code Online (Sandbox Code Playgroud)
在文件 MyProject\main.go
package main
import(
Fiboo "./Entity/Fiboo"
)
var TableClient Fiboo.Client
func main(){
TableClient.ID = 1
TableClient.name = 'Hugo'
// do your things here
}
Run Code Online (Sandbox Code Playgroud)
(我在 Ubuntu 16.04 上运行 Go 1.9)
记住伙计们,我是 Go 的新手。如果我所做的是不好的做法,请告诉我!
| 归档时间: |
|
| 查看次数: |
148778 次 |
| 最近记录: |