Go 子包函数未正确导入

标签 go

尝试着手研究 Golang 中的包。

这是我的工作空间

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

ma​​in.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 子包函数未正确导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37521389/

相关文章:

mysql - 使用 SET 变量进行 MySQL 查询

encryption - Golang 在不同的机器上生成相同的加密

go - 在VS代码中设置golang项目

go - 如何在结构中打印结构 slice 的标记

go - 执行外部命令并返回其输出

go - 添加结构的平面图

ubuntu - 需要在 Ubuntu 14.04 (trusty64) 上将 Go 1.2.1 升级到 1.3+

git - 在 Github repo 的子目录中安装 golang 库

go - 指针值到正常值

Golang mysql html 注释