Go 工具链详解(四): Golang环境变量设置和查看工具 go env

go env 作用

go env 是 Go 工具链中的一个命令,用于设置和查看当前 Golang 环境的相关信息,对于理解、编译和运行 Golang 程序非常有用。

go 提供的命令及 go 程序的编译运行都会使用到环境变量,如果未设置对应的环境变量,go 则会使用其默认设置。默认情况下,env 以 shell 脚本(在Windows上是批处理文件)的形式打印环境变量。如果查看指定的一个或多个变量,每个变量的值会占用一行。

go env 常用的参数说明:

  • -json:以 json 格式打印环境变量。
  • -u:后面需要跟上一个或多个参数值,如果使用'go env -w'设置了指定环境变量的值,则取消对应的值设置。
  • -w:后面需要跟上一个或多个形式为 NAME=VALUE 的参数,并将指定环境变量的默认设置更改为给定值。

go env 使用方法和使用示例

列出 go 环境变量

go env

会输出如下内容,由于内容太多,只列出几个,其他使用省略号代替:

GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/luduoxin/Library/Caches/go-build"
...

以 json 格式列出环境变量:

 go env -json

会输出如下内容,由于内容太多,只列出部分,其他使用省略号代替:

{"AR": "ar","CC": "clang","CGO_CFLAGS": "-g -O2",...
}

查看看某个或者某几个 go 环境变量:

$ go env GOPATH 
/Users/luduoxin/go
$ go env GOPATH GOROOT
/Users/luduoxin/go
/usr/local/opt/go/libexec

更改某个或者某几个 go 环境变量:

$ go env GOPATH=/Users/ning/go
$ go env GOPATH=/Users/ning/go GOROOT=/usr/local/go/libexec

如果对应的环境变量已经在操作系统环境变量配置文件中配置过,使用go env -w 方式修改是无效的,会报出如下错误:

warning: go env -w GOPATH=... does not override conflicting OS environment variable

go 环境变量及作用

接下来看一下通用环境变量:

  • GO111MODULE:用来控制使用 go mod 模式还是 GOPATH 模式,值为 off, on 或 auto。
  • GCCGO:gccgo 命令运行'go build -compiler=gccgo'。
  • GOARCH:当前架构,例如 amd64, 386, arm, ppc64等。
  • GOBIN:Go 命令的默认二进制目录,即'go install'将安装命令的目录。
  • GOCACHE:Go 命令的缓存目录。
  • GOMODCACHE:go命令将存储下载模块的目录。
  • GODEBUG:启用各种调试工具,参见'go doc runtime'。
  • GOENV:Go 环境变量配置文件的位置。
  • GOFLAGS:Go 命令的标志位参数。
  • GOINSECURE:用于指定哪些域名下的仓库不校验CA证书。
  • GOOS:当前操作系统,例如 linux,darwin,windows,netbsd 等。
  • GOPATH:Go 项目的根目录。
  • GOPROXY:Go module 代理的 URL。
  • GOROOT:Golang 安装的根目录。
  • GOSUMDB:要使用的校验数据库的名称以及可选的公钥和URL
  • GOTMPDIR:go 命令写入的目录,临时的源文件、包和二进制文件。
  • GOVCS:列出可能与匹配服务器一起使用的版本控制命令。
  • GOWORK:workspace 设置。

除了通用环境变量,还有使用 cgo 相关的环境变量、特定系统架构的环境变量、专用环境变量和只能通过 go env 读取的环境变量,这些本文就不做具体讲解了,详细信息可以通过 go help environment 命令查看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/9263.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows nvm 安装后webstrom vue项目编译报错,无法识别node

1 nvm安装流程 卸载原先nodejs用管理员权限打开exe安装nvmnvm文件夹和nodejs文件夹 都授权Authenticated Users 完全控制nvm list availablenvm install 16.20.1nvm use 16.20.1输入node和npm检查版本命令,正常显示确认系统变量和用户变量都有nvm 和nodejs 2 bug情…

Springboot @Async 多线程获取返回值

Springboot Async 多线程获取返回值 需求背景 最近需要用到多线程, 自己维护线程池很麻烦, 正好看到Springboot集成线程池的例子, 这里自己做了个尝试和总结, 记录一下, 也分享给需要的朋友; 不考虑事务的情况下, 这个多线程实现比较简单, 主要有以下几点: 在启动类加上Enab…

iTOP-RK3568开发板Docker 安装 Ubuntu 18.04

Docker 下载安装 Ubuntu18.04,输入以下命令: sudo apt update docker pull ubuntu:18.04 切换 Shell 到 Ubuntu 18.04,输入以下命令: docker container run -p 8000:3000 -it ubuntu:18.04 /bin/bash -p 参数:容器的…

Ftp和UDP的区别之如何加速文件传输

FTP(文件传输协议)是一种传输大文件的老方法,它的速度慢,而且容易受到网络环境的影响。在当今这个文件越来越大,项目交付时间越来越紧,工作分布在全球各地的时代,有没有办法让 FTP 加速呢&#…

大数据课程D2——hadoop的概述

文章作者邮箱:yugongshiyesina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解hadoop的定义和特点; ⚪ 掌握hadoop的基础结构; ⚪ 掌握hadoop的常见命令; ⚪ 了解hadoop的执行流程; 一、简介 1…

Java: Hutool工具包

1.IO相关的工具类 IoUtil : 流操作工具类Fileutil : 文件读写和操作的工具类FileTypeUtil :文件类型判断工具类watchMonitor : 目录、文件监听classPathResource : 针对ClassPath中资源的访问封装FileReader &#xf…

adnroid 11. 0 Activity启动流程图解

从Launcher到ActivityTaskManager 从ActivityTaskManagerService 到 ApplicationThread 从ApplicationThread到onCreate

Java三大特性,设计的五大原则的理解

Java三大特性分别是封装,继承,多态。 下面谈谈我对这三个特性的理解: 1.封装 指的是将类的成员变量(属性)和成员方法(方法)隐藏起来,通过使用访问修饰符(如private、public、protected等)来限制外部对类的直接访问,从而…

全面解析 SOCKS5 代理和 HTTP 代理在网络安全与爬虫应用中的技术对比与应用指南

一、SOCKS5 代理和 HTTP 代理的基本原理 SOCKS5 代理:SOCKS5 是一种网络协议,可以在传输层代理 TCP 和 UDP 请求。它不解析请求内容,仅在客户端和代理服务器之间建立连接,并转发数据。SOCKS5 代理支持众多网络协议和端口类型&…

mac 安装 php 与 hyperf 框架依赖的扩展并启动 gptlink 项目

m系列 mac 安装 php 与 hyperf 框架依赖的扩展并启动 gptlink 项目 gptlink 项目是一个前后端一体化的 chatgpt 开源项目 gptlink 项目地址:https://github.com/gptlink/gptlink 安装 php 8.0 版本: brew install php8.0安装完成后提示如下&#xff…

uniapp 语音文本播报功能

最近uniapp项目上遇到一个需求 就是在接口调用成功的时候加上语音播报 , ‘创建成功’ ‘开始成功’ ‘结束成功’ 之类的。 因为是固定的文本 ,所以我先利用工具生成了 文本语音mp3文件,放入项目中,直接用就好了。 这里用到的工…

Rust vs Go:常用语法对比(十一)

题目来自 Rust Vs Go: Which Language Is Better For Developing High-Performance Applications?[1] 202. Sum of squares Calculate the sum of squares s of data, an array of floating point values. 计算平方和 package mainimport ( "math")func main() { da…

OpenCV 4.0+Python机器学习与计算机视觉实战

💂 个人网站:【办公神器】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 目录 前言第一部分&…

TypeScript入门学习汇总

1.快速入门 1.1 简介 TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准。 TypeScript 由微软开发的自由和开源的编程语言。 TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript 可以运行在…

HTTP超本文传输协议

HTTP超本文传输协议 HTTP简介HTTP请求与响应HTTP请求请求行请求头空行请求体 HTTP响应响应行响应头空行响应体 HTTP请求方法GET和POST之间的区别HTTP为什么是无状态的cookie原理session 原理cookie 和 session 的区别cookie如何设置cookie被禁止后如何使用session HTTP简介 HT…

论文阅读与管理方法论

文章目录 为什么读论文论文类型综述论文专题论文 论文质量角度关于如何找论文的小Tips如何整理论文读论文的困境如何读论文不同人群阅读差异读论文三部曲:泛读、精读、总结泛读:快速浏览,把握概要。泛读目标及效果自测 精读:选出精…

MS1826B HDMI 1进4出 视频拼接芯片

MS1826B 是一款多功能视频处理器,包含 4 路独立 HDMI 音视频输出通道、1 路 HDMI 音视 频输入通道以及 1 路独立可配置为输入或者输出的 SPDIF、I2S 音频信号。支持 4 个独立的字库定 制型 OSD;可处理隔行和逐行视频或者图形输入信号;有四路独…

-jar和 javaagent命令冲突吗?

当使用 -jar 命令运行 Java 应用程序时,Java 虚拟机 (JVM) 会忽略任何设置的 -javaagent 命令。这是因为 -jar 命令会覆盖其他命令行选项,包括 -javaagent。 这是因为 -jar 命令是用于运行打包为 JAR 文件的 Java 应用程序的快捷方式。它会忽略其他命令…

(原创)Flutter与Native通信的方式:MethodChannel

前言 随着Flutter混合开发的项目越来越多,我们也有了实际的一个场景, 那就是Flutter如何与原生(Native)端进行通信 目前看来,大概有三种方式,分别是: MethodChannel EventChannel MessageChann…

Redis配置与优化

目录 一、关系数据库与非关系型数据库 1、关系型数据库 2、非关系型数据库 3、关系型数据库和非关系型数据库区别 1、数据存储方式不同 2、扩展方式不同 3、对事务性的支持不同 二、Redis 1、简介 2、优点 3、缺点 4、使用场景 5、哪些数据适合放入缓存中 6、为什…