无法在golang中创建自定义包

时间:2015-07-06 16:39:08

标签: go

我对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名称。请帮我解决这个问题。

非常感谢任何帮助。

由于

3 个答案:

答案 0 :(得分:2)

go run用于可执行文件,适用于单独的文件。使用go installgo 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