D:
|——program
|——Code
|——go
|——src
| |——goStudy
| |——self
| |——main.go
| |——Interface
| |——test_interface.go
|——pkg
|——windows_amd64
|——goStudy
|——self
|——interface.a
Interface 包下面有一个 test_interface.go 文件
package Interface
type coder interface {
code()
debug()
}
type Gopher struct {
language string
}
func (g Gopher)code() {
fmt.Printf("I am coding %s language.\n", g.language)
}
func (g *Gopher)debug() {
g.language = "golang"
fmt.Printf("I am debugging %s language.\n", g.language)
}
func TransValueTest() {
var c Gopher = Gopher{language: "go"}
c.debug()
}
main.go
package main
import "goStudy/self/Interface"
func main() {
Interface.TransValueTest()
}
然后我在
D:\program\Code\go\pkg\windows_amd64\goStudy\self里面执行下面这条命令
go tool compile -S main.go
结果报了下面这个错误:
can't find import: "goStudy/self/Interface"
很奇怪不知道为什么错了,后来搜索各种解决方案,终于找到了方法。
解决方案
第一步,它不是找不到 “goStudy/self/Interface” 这个吗,那么我们要将 Interface 包编译成 .a 文件,类似于 C 语言里的动态链接库。
//在任意一个目录里打开 cmd,然后执行下面这个命令
go install goStudy\self\Interface
//为什么从 goStudy 目录开始呢,你可以在控制台里输入 echo %GOPATH% 命令,查看你电脑的 GOPATH 路径
//我电脑里的 GOPATH 路径是 D:\program\Code\go,然后上面的 goStudy 就在 %GOPATH%\src 路径下
//一般在使用 go 命令去 *** 作 go 代码时,我们的 go 编译器会去 %GOROOT%\src 和 %GOPATH%\src 下寻找要 *** 作的 go 代码
第二步,我们找到上一步获得的 .a 文件在哪里,一般情况下,通过 go install 命令产生的文件都在 %GOPATH%\pkg 文件夹下。
D:\program\Code\go\pkg\windows_amd64\goStudy\self最后一步,我们重新执行最开始的那个命令,不过稍稍有点不一样。
go tool compile -S -I D:\program\Code\go\pkg\windows_amd64 main.go
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)