试图用Golang的包裹包住我的头。

这是我的工作区

/bin
/pkg
/src
  /github.com
    /esbenp
      /testrepo
        /subpackage
          somefuncs.go
        main.go

main.go
package main

import "github.com/esbenp/testrepo/subpackage"

func main() {
  Somefunc()
}

somefuncs.go
package subpackage

import "fmt"

func Somefunc() {
  fmt.Printf("yo")
}

我的印象是,由于Somefunc以大写字母开头,因此它将被导出以供导入它的其他文件使用。我进入控制台的输出是。
main.go:4: imported and not used: "github.com/esbenp/testrepo/subpackage"
main.go:8: undefined: Somefunc

有人可以指出我正确的方向吗?

最佳答案

您必须在包名称所属的函数之前加上前缀:subpackage.Somefunc()

如果您有多个具有相同名称的子包,则在导入它们时必须给它们加上别名,否则会发生冲突:

import (
    xapi "x/xx/xxx/api"
    yapi "y/yy/yyy/api"
)

关于go - Go子包功能未正确导入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37521389/

10-17 00:59