go 包相关知识

embedded/2024/10/21 17:25:35/

在Go语言中,包的引用和搜索路径是由环境变量GOPATH和GO111MODULE共同决定的。

GOPATH环境变量:这个变量定义了默认的工作目录,Go命令行工具将会在这个目录下查找包文件。这个目录通常包含三个子目录:src、bin和pkg。

src目录包含所有的源代码。

bin目录存放编译后的可执行文件。

pkg目录存放编译后的包文件。

GO111MODULE环境变量:这个变量用来开启或关闭模块支持。

如果GO111MODULE=off,那么Go会使用GOPATH来查找依赖,并且依赖会被安装到GOPATH中src同级的bin和pkg目录。

如果GO111MODULE=on或者未设置但项目根目录下有go.mod文件,Go将使用模块系统。在这种情况下,依赖关系将被下载到一个特定的$GOPATH/pkg目录,而不是GOPATH的src目录外,并且编译的可执行文件将不会放入GOPATH/bin,除非你显式地设置了GOBIN环境变量。

设置这些环境变量通常在你的shell配置文件中进行,例如.bashrc、.bash_profile或.zshrc。

例如,在bash shell中设置GOPATH和GO111MODULE:

export GOPATH=$HOME/go
export GO111MODULE=on
export GOPRIVATE=github.com/mycorp/*
export PATH=$PATH:$GOPATH/bin

在这个例子中,我们将GOPATH设置为用户主目录下的go文件夹,开启了模块支持,设置了私有模块的访问权限,并且将Go的可执行文件目录添加到了PATH环境变量中。

在Go项目中引用包,你可以使用相对路径或者是绝对路径。绝对路径通常是指从 G O P A T H / s r c 或者模块的 GOPATH/src或者模块的 GOPATH/src或者模块的GOPATH/pkg目录开始的路径。相对路径是指项目内部的路径。

例如,引用同一个GOPATH中的另一个项目的包:

import "myproject/anotherpackage"

引用模块代理下的包(当GO111MODULE=on时):

import "rsc.io/quote"

引用标准库中的包:

import "fmt"

引用外部模块中的包(通常在go.mod文件所在目录下):

import "github.com/gin-gonic/gin"

注意,在Go 1.16及以后的版本中,GO111MODULE默认是开启的,并且GOPATH的功能已经被减少,主要用于兼容老的代码。在新的项目中,建议使用Go模块进行依赖管理。


http://www.ppmy.cn/embedded/129323.html

相关文章

C语言[经典题——4×5矩形阵]

输出45的矩形阵 用for循环输出1&#xff5e;20数字摆出45的矩形阵 两个for循环嵌套使用&#xff0c;当外部的for循环输出一位&#xff0c;内部小的for循环就整个输出&#xff0c;直到外部的for循环输出完毕&#xff0c;在搭配if实现分行。 #include <stdio.h> int main()…

openSSL生成WEB SSL证书

1.使用openSSL生成凭证与私钥&#xff1a; openssl genrsa -out privatekey.pem 2048 openssl req -new -key privatekey.pem -out cert_req.pemCountry Name (2 letter code) [AU]:cn State or Province Name (full name) [Some-State]:sh Locality Name (eg, city) []:sh Or…

Artillery:强大的API负载测试工具

在现代软件开发中&#xff0c;API&#xff08;应用程序编程接口&#xff09;已成为连接不同服务和应用的核心组件。随着API的普及&#xff0c;确保其性能和稳定性变得至关重要。负载测试是评估API在高并发情况下表现的重要手段之一。在众多负载测试工具中&#xff0c;Artillery…

PPT分享:埃森哲-如何利用大数据进行数据挖掘与分析

PPT下载链接见文末~ 在当今信息爆炸的时代&#xff0c;大数据已成为企业决策、科学研究及社会发展的重要驱动力。数据挖掘与分析作为大数据应用的核心环节&#xff0c;能够帮助我们从海量数据中提取有价值的信息和知识。 本文将引导您了解如何利用大数据进行数据挖掘与分析&a…

通信基站类型、频段与网络标准

【1】通信基站类型 移动通信基站根据覆盖面积和功率大小主要可以分为以下几种类型&#xff1a; 宏基站&#xff08;宏站&#xff09;&#xff1a;这是最常见的基站类型&#xff0c;具有较大的发射功率和较广的覆盖范围&#xff0c;通常覆盖半径从1到25公里不等。宏基站主要用于…

RabbitMQ 中的交换机学习

RabbitMQ 中的交换机学习 一、直接交换机&#xff08;Direct Exchange&#xff09; 1. 介绍 Direct 交换机将消息路由到绑定了指定 Routing Key 的队列中。每条消息都有一个 Routing Key&#xff0c;当队列绑定到 Direct 交换机时&#xff0c;它需要一个指定的 Routing Key。…

4.建造者模式

对于建造者模式而已&#xff0c;它主要是将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。适用于那些产品对象的内部结构比较复杂。 建造者模式将复杂产品的构建过程封装分解在不同的方法中&#xff0c;使得创建过程非常清晰&#xff0c;能够…

docker 数据管理,数据持久化详解 二 数据卷容器

数据卷和数据卷容器核心区别 持久性对比 数据卷&#xff1a;当您直接在启动容器时指定了一个数据卷&#xff08;例如&#xff0c;使用docker run -v /data&#xff09;&#xff0c;这个数据卷会自动创建&#xff0c;并且其内容会在容器停止或删除后继续存在。您可以随时通过Do…