栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

Go语言(使用)——go tool compile; can‘t find import: “ “

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Go语言(使用)——go tool compile; can‘t find import: “ “

问题描述
  • 代码目录结构如下:
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:programCodegopkgwindows_amd64goStudyself里面执行下面这条命令
go tool compile -S main.go
  • 结果报了下面这个错误:
can't find import: "goStudy/self/Interface"
  • 很奇怪不知道为什么错了,后来搜索各种解决方案,终于找到了方法。
解决方案
  1. 第一步,它不是找不到 “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 代码
  1. 第二步,我们找到上一步获得的 .a 文件在哪里,一般情况下,通过 go install 命令产生的文件都在 %GOPATH%pkg 文件夹下。
    D:programCodegopkgwindows_amd64goStudyself
  2. 最后一步,我们重新执行最开始的那个命令,不过稍稍有点不一样。
go tool compile -S -I D:programCodegopkgwindows_amd64 main.go
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/909978.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号