undefined:function(在另一个包中声明)

Xys*_*Xys 3 go

我的项目组织看起来像这样:

  • GOPATH
    • SRC
      • CVS /用户/项目
        • main.go
        • utils的
          • utils.go

main.go看起来像这样:

package main

import (
  "fmt"
  "cvs/user/project/utils"
)

func main() {
   ...
   utilsDoSomething()
   ...
}
Run Code Online (Sandbox Code Playgroud)

和utils.go:

package utils

import (
  "fmt"
)   

func utilsDoSomething() {
    ...
}
Run Code Online (Sandbox Code Playgroud)

编译器告诉我:

main.go imported and not used: "cvs/user/project/utils"

main.go undefined: utilsDoSomething
Run Code Online (Sandbox Code Playgroud)

我不知道我做错了什么.任何想法都会有所帮助,谢谢你提前!

nem*_*emo 9

您忘记了包前缀,main.go并且未导出您的函数,这意味着无法从其他包访问它.要导出标识符,请在名称的开头使用大写字母:

utils.UtilsDoSomething()
Run Code Online (Sandbox Code Playgroud)

获得utils前缀后,您还可以删除Utils名称:

utils.DoSomething()
Run Code Online (Sandbox Code Playgroud)

如果要将utils包中的所有内容导入主应用程序的命名空间,请执行以下操作:

import . "cvs/user/project/utils"
Run Code Online (Sandbox Code Playgroud)

之后你可以DoSomething直接使用.