为了账号安全,请及时绑定邮箱和手机立即绑定

你好,戈兰的世界

你好,戈兰的世界

Go
白衣染霜花 2022-06-06 15:10:17
我正在关注官方的 Go 教程:https ://golang.org/doc/code.html但我没有通过命令行做事,而是使用 GoLand。当所有内容都包含在 HelloWorld.go 包中时,我能够运行程序并看到打印的“Hello World”,但是当我添加 morestrings 包并尝试将其导入 HelloWorld.go 时,我收到导入错误(Cannot resolve file 'morestrings'):package mainimport (    "morestrings"    "fmt")func main() {    fmt.Println(morestrings.ReverseRunes("!oG ,olleH"))}这是我定义的morestrings包:package morestrings// ReverseRunes returns its argument string reversed rune-wise left to right.func ReverseRunes(s string) string {    r := []rune(s)    for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {        r[i], r[j] = r[j], r[i]    }    return string(r)}我已将GOPATH项目设置设置为项目的根目录 ( GoGoHelloWorld)。我的理解是 Go 会查找从 开始的导入GOPATH,所以我希望它会找到 morestrings 包。这是文件结构:
查看完整描述

3 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

如果你的 go 路径是 GOPATH=/Users/.../IdeaProjects/FinalGoHelloWorld。我假设您已经在“FinalGoHelloWorld”中创建了一个项目“GoGoHelloWorld”。

您的导入语句错误,您应该使用“GoGoHelloWorld/src/morestrings”


查看完整回答
反对 回复 2022-06-06
?
墨色风雨

TA贡献1853条经验 获得超6个赞

当您尝试在 GO 中导入包时,它不会在整个文件系统中的任何地方查找该包,它会在特定文件夹中查找该包。这些文件夹是src您的GOROOTandGOPATH目录中的文件夹。

您的所有代码都应该放在 thisGOPATHsrc文件夹中。

你在评论部分提到GOPATH=/Users/.../IdeaProjects/FinalGoHelloWorld。所以你必须在这个目录中创建一个src文件夹,所有的代码都在里面src

所以你的GoGoHelloWorld文件夹的完整路径必须是/Users/.../IdeaProject/FinalGoHelloWorld/src/GoGoHelloWorld,所以现在你的导入应该看起来更像

import (    
    "GoGoHelloWorld/src/morestrings"
    "fmt"
    )

作为参考,由于您的 GOROOT 是GOROOT=/usr/local/go您的 fmt 包(文件夹)将位于/usr/local/go/src/fmt

我还建议将GOPATH文件夹名称从更改FinalGoHelloWorld为更通用的名称,例如GoWorkspace. 所以在里面GoWorkspace/src你可以创建多个具有特定名称的项目文件夹。

最后一件事,再创建两个文件夹,bin以及pkg,以及src里面GOPATH


查看完整回答
反对 回复 2022-06-06
?
catspeake

TA贡献1111条经验 获得超0个赞

首先,我认为您可以看一下这个go 项目布局,它可能与 C++ 或 Java 等其他语言不同。其次,我想使用 go 模块。



查看完整回答
反对 回复 2022-06-06
  • 3 回答
  • 0 关注
  • 143 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信