微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何配置一个简单的 Go 项目

如何解决如何配置一个简单的 Go 项目

我正在尝试按照 Thorsten Ball 的《在围棋中编写解释器》一书,并且在第一章中他建立了这个简单的方案

file /Users/myuser/projects/monkey/token/token.go
file /Users/myuser/projects/monkey/lexer/lexer.go
file /Users/myuser/projects/monkey/lexer/lexer_test.go

在 lexer/lexer.go 和 lexer/lexer_test.g 中,文件开头为

package lexer

在 lexer_test.go 中的导入是

import (
    "testing"
    "monkey/token"
)

然后他说为了运行测试,我必须运行(从 /Users/myuser/projects/monkey 目录):

go test lexer/lexer_test.go

但是当我这样做时,我收到错误

lexer/lexer_test.go:6:2: cannot find package "monkey/token" in any of:
    /usr/local/opt/go/libexec/src/monkey/token (from $GOROOT)
    /Users/myuser/golang/src/monkey/token (from $GOPATH)
FAIL    command-line-arguments [setup Failed]
FAIL

我一直试图了解如何在 go 中配置包,但我发现了很多关于 GOPATH、GOROOT 和 go.mod 的非常复杂的文档。我一直在尝试所有这些方法而没有摆脱这个问题。

有人可以帮我吗?我确定这是一个简单的修复,但我无法弄清楚:(

解决方法

正如错误信息所说,编译器在本地找不到包。

你确定你已经安装了这个包吗?

您可能需要执行go get [packagename]

例如,go get golang.org/x/tools/cmd/goimports

,

对于 Golang,它会先从 go root 中找到包,然后去路径,然后从外部导入。所以基本上,你应该在你的 go root 或 go path 中有那个包 monkey/token。 我认为这与 goimport 无关,因为monkey/token 似乎不是可以导入的官方库。 当我第一次尝试 Golang 时,我遇到了同样的问题。我通过在 go 路径(您的工作目录)中创建该包或从您的书中创建该包来解决。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。