问题描述
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()
}
package main
import "goStudy/self/Interface"
func main() {
Interface.TransValueTest()
}
D:programCodegopkgwindows_amd64goStudyself里面执行下面这条命令
go tool compile -S main.go
can't find import: "goStudy/self/Interface"
- 很奇怪不知道为什么错了,后来搜索各种解决方案,终于找到了方法。
解决方案
- 第一步,它不是找不到 “goStudy/self/Interface” 这个吗,那么我们要将 Interface 包编译成 .a 文件,类似于 C 语言里的动态链接库。
//在任意一个目录里打开 cmd,然后执行下面这个命令
go install goStudyselfInterface
//为什么从 goStudy 目录开始呢,你可以在控制台里输入 echo %GOPATH% 命令,查看你电脑的 GOPATH 路径
//我电脑里的 GOPATH 路径是 D:programCodego,然后上面的 goStudy 就在 %GOPATH%src 路径下
//一般在使用 go 命令去操作 go 代码时,我们的 go 编译器会去 %GOROOT%src 和 %GOPATH%src 下寻找要操作的 go 代码
- 第二步,我们找到上一步获得的 .a 文件在哪里,一般情况下,通过 go install 命令产生的文件都在 %GOPATH%pkg 文件夹下。
D:programCodegopkgwindows_amd64goStudyself
- 最后一步,我们重新执行最开始的那个命令,不过稍稍有点不一样。
go tool compile -S -I D:programCodegopkgwindows_amd64 main.go