小工具      在线工具  汉语词典  css  js  c++  java

package XXX is not in GOROOT (C:\Program Files\Go\src\XXX)

Go,c语言,golang,java 额外说明

收录于:156天前

出现这个错误的原因是导入的包路径错误。 Go在导入包时有自己的搜索方法,如下:

GOPATH模式下,执行go build或go run时,vendor目录、GOPATH目录、GOROOT目录下可能存在依赖库(标准库、第三方库等)。会按照下面的目录流程找到引用的依赖项:

  1. 在当前目录的vendor目录中查找依赖包
  2. 如果当前目录不存在vendor目录,则到上一级目录查找。
  3. 重复步骤 2,直到到达 $GOPATH/src 目录
  4. 如果在vendor目录下没有找到依赖包,则进入$GOROOT目录下查找依赖包。
  5. $GOPATH目录下没有依赖包,则进入$GOROOT目录寻找依赖包。

如果在 GOPATH 目录下没有找到该包,最终会在 GOROOT 下查找。如果没有找到,就会报错。

如下,在GOPATH目录下创建src/hello目录,并创建main.go和test.go两个源文件,内容如下:

package main

import "fmt"

import "unit4/src/hello/test"

func main()  {
    
	fmt.Println("Hello")

	test.PrintTest()
}
package test
import "fmt"

func PrintTest(){
    
	fmt.Println("test")
}

在这里插入图片描述

运行时报错,如下:

在这里插入图片描述

这违反了go包管理的原则。一个文件需要在一个独立的文件中,而上面的main和test都在hello目录下,这是错误的。

由于包管理文件时,文件必须位于独立的包下,因此创建一个test目录,并将test.go源文件移动到测试包中,如下:

在这里插入图片描述

重构包后在需要的文件中引入test包import "unit4/src/hello/test"

需要注意的是,这里路径表示的意义是:项目根目录/src/包目录。最终到包目录即可。

可以看到,进入包时,只导入了包目录,引用也是根据包名,所以源文件名没有任何作用。也就是说,test.go文件可以任意命名,因为在包管理下,它的主要作用就是包名。

如下改为xxx.go后仍然可以运行:

在这里插入图片描述
在这里插入图片描述

了解了包的引入原理后,就可以正确书写路径了。

. . .

相关推荐

额外说明

Mysql id逆向排序深页优化

测试有110W数据,翻页到100W 优化前 优化前3s explain SELECT * from t_report_variable r ORDER BY r.id desc LIMIT 1000010 ,10; #3.016 秒 优化后 优

额外说明

水壶下载与安装

Kettle简介:Kettle 是 PDI 以前的名称,PDI 的全称是Pentaho Data Integeration,Kettle 本意是水壶的意思,表达了数据流的含义。Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、L

额外说明

使用Python+Flask开发博客项目,并实现内网穿透

前言 Flask是一个使用python编写的轻量级Web框架,对比其他相同类型的框架而言,这个框架更加的灵活轻便。并且具有很强的定制性,用户可以根据自己的需求添加功能,有强大的插件库,这也是为什么这个框架在python领域一直火热的原因。这篇文章我们将使

额外说明

实战篇:AutoUpgrade 便捷高效的升级 Oracle 数据库

目录 前言 一、环境准备 二、升级前准备 1、设置JAVA环境变量 2、源端创建并编辑config文件 3、升级前源库进行分析检查 4、升级前源库执行修复脚本 三、正式升级 1、关闭源库 2、拷贝源库数据文件,日志文件,参数文件,密码文件到目标端,均在源

额外说明

CentOS7.5安装Cacti1.1.38

1. 安装基础软件 基本环境介绍: 1.1安装基础软件包 安装 Cacti 需要 Mysql,PHP,RRDTool,net-snmp 和 支持 PHP 的 Web服务器,如 Apache,Nginx 或 IIS等。 软件版本要求: PHP 5.4+ h

额外说明

如何清理linux的磁盘

Linux查看磁盘用量 命令 df -h   Linux查看当前文件夹使用磁盘用量 du -sh /*   删除占用空间最大的文件, 日志文件 rm -rf 文件名 已删除文件可能还有进程在使用 找出这些进程的命令 1、如果你知道文件名的话: lsof

额外说明

阿里云Linux系统(Centos和Ubuntu)下安装jdk并配置环境变量

一、目标: 在CentOS6.9 64位上安装jdk1.8(tar.gz安装包),并配置环境变量 (Ubuntu下也可以是这个步骤) jdk安装在/var/opt/Linux目录下 这里我们会用到Xshell:可参看该博客:Linux安装和使用Xftp6

额外说明

Python自学:异步Asynchronous

以下代码主要包含两个函数,main()和other_function()。main()函数先打印“A”,然后睡眠1秒,在它睡眠的同时,执行other_function()函数,打印“1”。然后other_function()函数睡眠2秒,在它睡眠的同时,

额外说明

Go开发常用函数将逗号分隔的字符串转换为数组和将数组slice 转为逗号分隔的string字符串 以及strings的其他函数

一、Go开发中最常用函数  1.将数组slice转为逗号分隔的string字符串 strings.Join(a []string, sep string) string 或者 strings.Join(str_arr, ",") 示例代码 :将[1,2,

额外说明

如何从微软官网下载win10镜像文件

1、输入网站: 下载Windows 10, 进入微软win10官方下载界面 2、进入后点击“立即下载工具”即可下载win10下载所需的工具 3、下载工具下载完成后,双击下载工具运行(点击后等待时间可能会较长) 4.点击“接受”(点击后等待时间可能会较长)

ads via 小工具