猿问

Go编译器“没有这样的文件或目录”是什么意思?

我正在尝试编译由多个模块组成的Go程序,如下所示:


// main.go

package main

import "mst"

// do something interesting involving minimum spanning trees


// src/mst/kruskal.go

import "disjsets"

// Kruskal's algorithm follows


// src/disjsets/disjsets.go

// implements disjoint sets with union-find

现在,当我在包含和的目录中运行其中一个go run main.go或go build之后export GOPATH=.时,它会打印main.gosrc


# disjsets

open src/disjsets/disjsets.go: No such file or directory

我不明白这一点。文件在那里ls -l src/disjsets/disjsets.go确认。这怎么会发生?disjsets.go如果Go要找到文件,该文件应放在哪里?


(Google Go 1.0.2)


慕的地8271018
浏览 312回答 2
2回答

慕村9548890

将您的GOPATH设置为某个位置并永久导出。然后把一些包blah放到目录中$GOPATH/src/foo/bar/baz/blah # (1)或者$GOPATH/src/blah # (2)或者$GOPATH/src/qux/blah # (3) etc.导入blah为其他包import "foo/bar/baz/blah" // (1)或者import "blah" // (2)或者import "qux/blah" // (3)该目录中的软件包将包含软件包文件。假设您只有一个,blah.go。那么它的位置是$GOPATH/src/foo/bar/baz/blah/blah.go // (1)$GOPATH/src/blah/blah.go // (2)$GOPATH/src/qux/blah/blah.go // (3)如果命名了blah包源文件proj.go,则改为说,$GOPATH/src/foo/bar/baz/blah/proj.go // (1)$GOPATH/src/blah/proj.go // (2)$GOPATH/src/qux/blah/proj.go // (3)但导入路径将与前一种情况相同。

海绵宝宝撒

好的,这似乎可以解决它:export GOPATH=`pwd`显然,它必须是一条绝对路径。不过,我仍然发现错误消息非常令人困惑。
随时随地看视频慕课网APP

相关分类

Go
我要回答