go 包相关知识

news/2024/10/23 5:55:57/

在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项目中引用包,你可以使用相对路径或者是绝对路径。绝对路径通常是指从 $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/news/1541246.html

相关文章

解决Eclipse中’Run As’菜单缺少’Run on Server’选项的问题

解决Eclipse中’Run As’菜单缺少’Run on Server’选项的问题 问题描述: 当您在Eclipse中导入一个Web项目后,可能会发现在’Run As’菜单中没有’Run on Server’选项。这可能会让您无法方便地在本地服务器上运行和调试Web应用程序。 可能原因&#…

Qml-CheckBox的使用

Qml-CheckBox的使用 CheckBox属性 CheckBox的继承关系: CheckBox – AbstractButton – Control – Item; CheckBox的属性主要继承于AbstractButton。属性checkState:勾选状态,值为:Qt.Unchecked、Qt.Checked、Qt.PartiallyChec…

iOS弹出系统相册选择弹窗

直接上代码 if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {UIImagePickerController *imagePickerController [[UIImagePickerController alloc] init];imagePickerController.delegate self; //设置代理imagePicke…

Greenhills学习总结

学习背景:近期参与xx项目过程中,遇到较多的关于代码集成编译的知识盲区,因此需要进行相关知识的学习和扫盲。 参考资料:GreenHills2017.7编译手册:本手册是GreenHills 2017.7.14版编译器的软件使用手册。该手册详细介绍了GreenHi…

Electron+Vue实现两种方式的截屏功能

本次介绍的截屏功能一共有两种分别是在electron环境中与非electron环境中 非electron环境 这个环境下会有一些限制: 1.只能截浏览器中的画面 2.如果里面有iframe或者base64的图片会加载不出来(这个会有解决办法) yarn add -D js-web-scree…

UE5遇到问题-UE5可正常打包出来但是运行不了

遇到问题: UE5可正常打包出来但是运行不了 解决办法: 首先先在本地运行跑一下工程; 发现是没有关闭插件的问题,点开插件关闭掉相应的插件重新打包就可以了。 参考视频:(新手向)虚幻5打包 打包后双击exe没反应怎么办…

【Unity】Unity中获取网络时间进行每日和每月刷新

直接上代码 using System; using System.Collections; using System.Collections.Generic; using UnityEngine;public class DateChecker : MonoBehaviour {private DateTime lastCheckedDate; //上次刷新日数据的日期private DateTime lastMonthUtc; //上次刷新月数据的日期T…

玫瑰花HTML源码

HTML源码 <pre id"tiresult" style"font-size: 9px; background-color: #000000; font-weight: bold; padding: 4px 5px; --fs: 9px;"><b style"color:#000000">0010000100000111101110110111100010000100000100001010111111100110…