如何访问导入的项目

具有以下项目结构


D:\src\go\my-app

 + internal\

 |  + utils.go

 + main.go

 + go.mod

具有以下文件内容:


internal\utils.go:


package internal


func GetText() string {

    return "hello world"

}

main.go:


package main


import (

    "fmt"

    "example.com/my_app/internal"

)


func main() {

    fmt.Println(GetText())

}

go.mod:


module example.com/my_app


go 1.17

从目录运行时出现以下编译错误:


D:\src\go\my-app>go build

# example.com/my_app

.\main.go:5:2: imported and not used: "example.com/my_app/internal"

.\main.go:9:14: undefined: GetText

任何想法,可能是什么问题?


PS:这个问题是可重现的,不是由拼写错误引起的,而是由错误的假设引起的(在其他编程语言中,导入的项目是通过它们的名称访问的)。


慕仙森
浏览 72回答 1
1回答

蓝山帝景

是的,问题很明确:您导入example.com/my_app/internal但不使用它。如果您使用它,那么internal.<something>您的主目录中就会有某个地方。GetText()不存在:GetText()您的主包中没有功能。解决方案:替换GetText()为internal.GetText()。现在example.com/my_app/internal使用并GetText()在此包中找到。
打开App,查看更多内容
随时随地看视频慕课网APP