我对GO很新。我尝试了几个例子,其中一个是使用cgo从GO调用C代码。
以下是我正在尝试的示例:https://code.google.com/p/go-wiki/wiki/cgo
以上述链接作为参考,我创建了一个包结构如下:
gocode / SRC / github.com / MYPKG / test.go
" MYPKG"是我创建的自定义包,并在test.go中使用它,如下所示:
打包mypkg
我运行go程序时遇到错误。 " go run:无法运行非主程序包"
我已将GOPATH设置为GO源代码文件夹。
GOPATH = / XYZ / gocode / SRC /
我搜索了解决方案并找到了以下链接,其中说明了无法创建自定义pacakages: https://groups.google.com/forum/#!topic/golang-nuts/vmebkoqYMH4
http://stackoverflow.com/questions/23870801/go-run-cannot-run-non-main-package
但是,我看到的所有代码都带有自定义的pacakage名称。请帮我解决这个问题。
非常感谢任何帮助。
由于
答案 0 :(得分:2)
go run
用于可执行文件,适用于单独的文件。使用go install
和go build
来处理包。补充阅读:http://golang.org/doc/code.html。
答案 1 :(得分:2)
在mypackage
mypackage.go
和$GOPATH
将mypackage.go
代码放入
package mypackage
func Hello() {
println("hello")
}
创建main.go
package main
import "mypackage"
func main() {
mypackage.Hello()
}
go run
命令必须应用于main
包
在您的情况下,创建main.go文件并导入github.com/mypkg
同样导入包不应包含main
函数。
答案 2 :(得分:0)
我遇到过这个问题。它显示此错误,因为任何.go文件中都没有主程序包。您应该创建一个主文件夹,在其中创建一个main.go文件来调用主包函数main并导入您的包,如下所示:
package main
import(
"fmt"
"github.com/mypkg"
)
func main(){
// use use your package functions here by packagename.functionname
mypkg.functionName()
fmt.Println("Hello")
}
现在通过移动到mypkg目录来构建程序包,如果您是窗口用户,则在终端或命令行上运行go build
。
上移到包含main.go文件的主目录并运行go install
它将在主目录的名称中创建可执行文件。目录结构就像。
workspace
├── bin
│ └── app
├── pkg
│ └── linux_amd64
| └── user
| └── handlers.a
└── src
├── bitbucket.org
├── github.com
└── user
└── app
├── main.go
└── mypkg
└──mypkg.go