英文:
Not able to create custom packages in golang
问题
我对GO还不太熟悉。我正在尝试一些例子,其中一个是使用cgo从GO调用C代码。
这是我正在尝试的例子:https://code.google.com/p/go-wiki/wiki/cgo
参考上面的链接,我创建了以下的包结构:
gocode/src/github.com/mypkg/test.go
"mypkg"是我创建的自定义包,并在test.go中使用了它:
package mypkg
当我运行我的go程序时,出现了一个错误。
"go run: cannot run non-main package"
我已将GOPATH设置为GO源代码文件夹。
GOPATH=/xyz/gocode/src/
我搜索了解决方案,并找到了以下链接,说自定义包无法创建:
https://groups.google.com/forum/#!topic/golang-nuts/vmebkoqYMH4
http://stackoverflow.com/questions/23870801/go-run-cannot-run-non-main-package
但是,我看到的所有代码都有一个自定义包名。请帮助我解决这个问题。
非常感谢您的帮助。
英文:
I am pretty new to GO. I was trying few examples and one of them was to use cgo to call a C code from GO.
Here is the example I am trying: https://code.google.com/p/go-wiki/wiki/cgo
With the above link as a reference I created a package structure as below:
gocode/src/github.com/mypkg/test.go
"mypkg" is the custom package that I have created and used it in the test.go as below:
package mypkg
I get an error when I run my go program.
"go run: cannot run non-main package"
I have set my GOPATH to the GO source code folder.
GOPATH=/xyz/gocode/src/
I searched for solutions and found the below links which says, custom pacakages cannot be created:
https://groups.google.com/forum/#!topic/golang-nuts/vmebkoqYMH4
http://stackoverflow.com/questions/23870801/go-run-cannot-run-non-main-package
But, All the code I see is with a custom pacakage name. Please help me to resolve this issue.
Any help is really appreciated.
Thanks
答案1
得分: 3
在$GOPATH
中创建mypackage
和mypackage.go
目录。
在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
函数。
英文:
Create dir mypackage
and mypackage.go
in $GOPATH
put in mypackage.go
following code
package mypackage
func Hello() {
println("hello")
}
Create main.go
package main
import "mypackage"
func main() {
mypackage.Hello()
}
go run
command must be applied to main
package
In you case, create main.go file and import github.com/mypkg
Also importing packages should not contain main
function.
答案2
得分: 2
go run
用于执行可执行文件,适用于单独的文件。使用 go install
和 go build
来处理包。更多阅读:http://golang.org/doc/code.html。
英文:
go run
is for executables, and works on separate files. Use go install
and go build
to work with packages. Additional reading: http://golang.org/doc/code.html.
答案3
得分: 0
我已经遇到过这个问题。它显示这个错误是因为任何.go文件中都没有主包。你应该创建一个主文件夹,在其中创建一个main.go文件来调用主包函数main,并在其中导入你的包,就像下面这样:
package main
import(
"fmt"
"github.com/mypkg"
)
func main(){
// 在这里使用你的包函数,使用 packagename.functionname
mypkg.functionName()
fmt.Println("Hello")
}
现在,通过进入mypkg目录并在终端或命令行中运行go build
来构建包,如果你是Windows用户。返回到包含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
英文:
I have been through this problem. It is showing this error because there is no main package in any .go file. You should create a main folder in which create a main.go file to call main package function main and import your package in that just like below:
package main
import(
"fmt"
"github.com/mypkg"
)
func main(){
// use use your package functions here by packagename.functionname
mypkg.functionName()
fmt.Println("Hello")
}
Now build the package by moving to mypkg directory and run go build
on terminal or command line if you are window user.
Move up to main directory which contains main.go file and run go install
it will create executable file in the name of main directory. The directory structure be like.
workspace
├── bin
│ └── app
├── pkg
│ └── linux_amd64
| └── user
| └── handlers.a
└── src
├── bitbucket.org
├── github.com
└── user
└── app
├── main.go
└── mypkg
└──mypkg.go
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论