去子包功能没有正确导入

时间:2016-05-30 08:49:00

标签: go

尝试在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

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

2 个答案:

答案 0 :(得分:7)

您必须在函数名称前加上函数的名称:subpackage.Somefunc()

如果您有多个具有相同名称的子包,则必须在导入时对其进行别名,否则会发生冲突:

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

答案 1 :(得分:2)

导入包时,它将以其名称提供。

要在main.go中解决Somefunc,你必须这样做

subpackage.Somefunc()