在Windows上安装Go编译器并配置Golang开发环境

文章目录

    • 1、安装Go语言编译程序
      • 1.1、下载GoLang编译器
      • 1.2、安装GoLang编译器
    • 2、配置Golang IDE运行环境
      • 2.1、配置GO编译器
        • 2.1.1、GOROOT 概述
        • 2.1.2、GOROOT 作用
        • 2.1.2、配置 GOROOT
      • 2.2、配置GO依赖管理
        • 2.2.1、Module管理依赖
        • 2.2.2、GOPATH 管理依赖
      • 2.3、运行GO程序
        • 2.3.1、创建 `hello.go` 文件
        • 2.3.2、运行 `hello.go`
    • 3、GoLang IDE 高效开发配置
      • 3.1、设置 goproxy
      • 3.2、安装效率插件
        • 3.2.1、goimports


1、安装Go语言编译程序

1.1、下载GoLang编译器

官网下载地址:https://golang.google.cn/dl/

在这里插入图片描述

根据自己的系统下载相应版本,这里下载的是最新版本,下翻页面可以选择下载历史版本
在这里插入图片描述

1.2、安装GoLang编译器

运行 go1.22.2.windows-amd64.msi

进入到下载目录下,双击 go1.22.2.windows-amd64.msi 文件进行安装

选择安装目录
在这里插入图片描述

点击Next,根据提示一路点击确认或者下一步到完成界面

2、配置Golang IDE运行环境

推荐使用 Jetbrains Golang: https://www.jetbrains.com/go/

Jetbrains Golang 无社区版,只有付费版,网上白嫖教程基本无效,白嫖Golang解决方案探索

2.1、配置GO编译器

2.1.1、GOROOT 概述

GOROOT 是 Go 语言中的一个环境变量,它指定了Go语言的安装目录。GOROOT 通常指向 Go 语言的根目录,该目录下包含了 Go 语言的编译器、标准库以及其他工具链。

2.1.2、GOROOT 作用

在 Go 语言的开发和编译过程中,GOROOT 用于定位 Go 语言的标准库和工具,确保开发环境能够正确地使用和调用这些资源。

通常情况下,在安装 Go 编译器时,GOROOT 会自动配置为 Go 语言的安装路径。在开发过程中,可以通过设置或修改 GOROOT 环境变量来指定不同的Go编译器版本安装路径。

2.1.2、配置 GOROOT

启动 GoLang 并 New Project 一个项目,此时 GoLang 根据用户系统环境变量中配置的 GoLang 编译器位置 自动创建 GOROOT

  • 如果安装了多个GoLang编译器版本,可以在下拉菜单中选择需要的版本
  • 如果下拉菜单中没有安装过的版本,请检查是否配置了 GoLang 编译器 系统环境变量。

在这里插入图片描述

点击 Create 创建一个Go语言项目完成

2.2、配置GO依赖管理

Go 1.11 版本开始,Go 语言引入了 模块(Module) 的概念,用于替代GOPATH进行依赖管理,在使用模块的情况下,GOPATH 的作用有所减弱,但仍用于存储一些工具和标准库等内容。

Go 1.13 版本开始,可以完全不依赖 GOPATH

二者择其一即可,建议使用 模块(Module) 管理依赖

2.2.1、Module管理依赖

Go Module是Go语言官方引入的依赖管理工具,它的主要作用包括:

  1. 依赖管理:Go Module可以帮助开发者管理项目的依赖关系。通过在项目中创建一个go.mod文件,Go Module能够记录项目所依赖的外部包及其版本信息。这样,开发者可以明确指定项目所需的依赖版本,避免因依赖版本不匹配而导致的问题。

  2. 版本控制:Go Module支持语义化版本控制(Semantic Versioning),开发者可以通过版本号来指定所需的依赖版本。这有助于确保项目的稳定性和可维护性,因为开发者可以明确知道项目使用了哪些版本的依赖。

  3. 灵活的项目布局:使用Go Module,项目不再需要位于传统的GOPATH目录结构下。开发者可以将项目放在任意位置,只要项目根目录中包含go.mod文件即可。这为开发者提供了更大的灵活性,使得项目管理更加方便。

  4. 自动下载依赖:当使用Go Module时,开发者只需在代码中导入所需的包,Go工具链会自动下载并安装这些包。这简化了依赖管理的过程,开发者无需手动下载和管理依赖。

  5. 支持私有仓库:Go Module还支持从私有仓库中获取依赖。开发者可以通过配置代理或认证信息来访问私有仓库中的依赖包。

  6. 可替换依赖:在某些情况下,开发者可能需要替换项目中的某个依赖包。Go Module提供了替换依赖的功能,开发者可以在go.mod文件中指定要替换的依赖及其替换版本。

  7. 可验证的依赖图:Go Module会生成一个go.sum文件,记录项目中所有依赖包的哈希值。这样,开发者可以验证项目中的依赖是否被篡改,确保项目的安全性。

总之,Go Module的出现使得Go语言的依赖管理更加规范和便捷,为开发者提供了更好的开发体验。

Golang 创建项目时如果选择了高版本的GO编译器,会自动在项目根目录下创建go.mod文件:

module GoBasicgo 1.21
2.2.2、GOPATH 管理依赖

GOPATH 是 Go 语言中另一个重要的环境变量,它指定了 Go 语言项目的工作空间。GOPATH 通常指向一个包含多个 Go 语言项目的目录,每个项目都位于GOPATH 下的一个子目录中。

在 Go 语言中,GOPATH 扮演着以下几个关键角色:

  1. 依赖管理:Go 语言使用 GOPATH 来管理项目的依赖关系。当一个项目依赖其他包时,Go 语言会自动在 GOPATH 中搜索并导入这些包。
  2. 构建和安装:Go 语言使用 GOPATH 来构建和安装项目。当执行go buildgo install命令时,Go 语言会根据 GOPATH 中的项目结构来构建和安装可执行文件或库文件。
  3. 代码组织:GOPATH提供了一种组织代码的方式,使得不同的项目可以独立开发和管理。每个项目都位于GOPATH 下的一个子目录中,并且可以有自己的依赖关系和构建配置。

在开发过程中,通常需要设置 GOPATH 环境变量来指定项目的工作空间。这样 Go 编译器就会在 GOPATH 目录下搜索和构建项目。

New Project 一个Go项目后,进入GoLang项目管理界面,File->Settings-> Go -> GOPATH

在这里插入图片描述
1、Use GOPATH that’s defined in system enviroment

取消选择,Global GOPATH 就不会有默认 GO项目目录了

2、Index entire GOPATH

在Golang中,Index entire GOPATH 是指在使用GoLand IDE时,将整个GOPATH路径下的内容都添加到项目的索引中。这样做的目的是让IDE能够更好地理解和处理项目中的依赖关系,提高代码编辑、自动完成和导航等功能的效率。如果选择这个选项,GoLand会将环境变量中配置的GOPATH路径下的所有内容都添加到项目的索引中。这样,即使项目中使用了不在项目目录中的第三方包,IDE也能够正确识别和处理这些包。但是,需要注意的是,Index entire GOPATH 可能会增加项目的索引时间和内存占用,特别是当GOPATH路径下包含大量文件和目录时。因此,在实际使用中,可以根据项目的具体情况来决定是否需要勾选这个选项。如果项目比较简单或者依赖关系较少,可以不勾选这个选项以减少索引时间和内存占用。反之,如果项目比较复杂或者依赖关系较多,勾选这个选项可以提高开发效率。

2.3、运行GO程序

如果选择 GOPATH 管理依赖记得删除项目根目录下的go.mod文件(GoLang使用高版本Go编译器创建项目时会自动创建go.mod文件)

2.3.1、创建 hello.go 文件
package mainimport "fmt"func main() {fmt.Println("Hello World !")
}
2.3.2、运行 hello.go

在这里插入图片描述

点击 Add Configuration… 配置Go编译器

在这里插入图片描述

点击OK

在这里插入图片描述

点击运行

在这里插入图片描述

3、GoLang IDE 高效开发配置

3.1、设置 goproxy

Goproxy是一个Go语言的模块代理工具,它的作用是作为Go Module的代理服务器,帮助开发者管理和下载Go语言项目的依赖模块。

在这里插入图片描述

可选的代理有如下(注意direct是必要的)

  • https://goproxy.io
  • https://goproxy.cn
  • https://mirrors.aliyun.com/goproxy

3.2、安装效率插件

3.2.1、goimports

goimports是Go语言开发中常用的一个工具,它基于Go语言的官方工具gofmt,并增加了自动导入和删除包的功能。具体来说,goimports具有以下功能:

  1. 自动导入包:在编辑Go代码时,如果使用了尚未导入的包,goimports会自动检测并导入这些包,无需手动添加import语句。
  2. 自动删除未使用的包:如果导入的包在代码中没有被使用,goimports会自动删除这些无用的import语句,保持代码的整洁。
  3. 格式化代码:goimports会按照Go语言的官方风格指南gofmt来格式化代码,包括缩进、空格、换行等,确保代码的一致性和可读性。
  4. 支持Go Modules:goimports支持Go语言的模块管理工具Go Modules,可以在使用模块管理的项目中正常工作。

在这里插入图片描述

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

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

相关文章

【面试经典 150 | 数学】直线上最多的点数

文章目录 写在前面Tag题目来源解题思路方法一:枚举直线遍历统计方法二:枚举斜率哈希统计 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并…

改进的注意力机制的yolov8和UCMCTrackerDeepSort的多目标跟踪系统

基于yolov8和UCMCTracker/DeepSort的注意力机制多目标跟踪系统 本项目是一个强大的多目标跟踪系统,基于[yolov8]链接和[UCMCTracker/DeepSot]/链接构建。 🎯 功能 多目标跟踪:可以实现对视频中的多目标进行跟踪。目标检测:可以实…

在 VS Code 中使用 GitHub Copilot

Code 结合使用。 GitHub Copilot 是什么 GitHub Copilot 是一个可以帮助你更简单、更快速地编写代码的工具,由 GPT-3 提供支持。你只需编写所需代码的描述——例如,编写一个函数来生成一个随机数,或对一个数组进行排序——Copilot 就会为你…

【Docker】docker原理及使用-1

Docker目录 1️⃣概念2️⃣使用容器的好处2️⃣docker和普通软件启动方式的区别2️⃣docker和传统虚拟机的区别 1️⃣下载安装2️⃣安装步骤 1️⃣必须要掌握的核心概念1️⃣命令2️⃣例子2️⃣练习题目2️⃣进入一下python环境(简洁) 1️⃣解释一下 redis1️⃣docker底层隔离机…

L3 【哈工大_操作系统】操作系统启动

本节要点: 1、理解 OS 启动过程发生了什么,理解 OS 与 硬件 与 应用 之间的关系 2、本节讲解了 setup 模块 和 system 模块实现的功能 1、计算机上电时,操作系统在硬盘(磁盘)上,为了“取指执行”&#xff0…

康姿百德床垫抗干扰设计,保证你和伴侣睡眠不受影响

康姿百德官网价格公开透明,床垫价格合理质量安全可靠 在我们的一生中,睡眠的时间占据我们生活的大部分。在繁忙的一天结束时,没有什么比沉浸在舒适床垫的温柔拥抱中更让人期待的,让您在睡眠过程中释放一整天的疲惫。康姿百德床垫…

第十五届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组

试题 C: 好数 时间限制 : 1.0s 内存限制: 256.0MB 本题总分:10 分 【问题描述】 一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位 )上 的数字是奇数,偶数位(十位、千位、十万位 &…

基于Spring Boot的入职匹配推荐系统设计与实现

基于Spring Boot的入职匹配推荐系统设计与实现 开发语言:Java框架:springbootJDK版本:JDK1.8数据库工具:Navicat11开发软件:eclipse/myeclipse/idea 系统部分展示 管理员登录界面,登录成功后进入到系统操…

面试经典150题——二叉树的最大深度

1. 题目描述 ​ 2. 题目分析与解析 这个题目有过一定基础的都应该知道,采用递归解决问题,因为要求一个二叉树的深度(也就是高度),其实上就是根节点的左子树和右子树中高度最高的那个。因此这个问题就可以拆解为&…

Python爬虫-京东商品评论数据

前言 本文是该专栏的第68篇,后面会持续分享python爬虫干货知识,记得关注。 在本专栏之前,笔者有详细介绍京东滑块验证码的解决方法,感兴趣的同学,可以直接翻阅文章《Python如何解决“京东滑块验证码”(5)》进行查看。 而本文,笔者以京东商品详情页的评论数据为例,通过…

悠络客亮相第十届智慧商业数字化运营高峰论坛

2024年4月12日,由中国零售(餐饮)CIO俱乐部、《智慧零售与餐饮》新媒体主办的“2024第十届智慧商业数字化运营高峰论坛暨中国零售CIO俱乐部春季思享会”在北京举办。 来自全国各地的商超、便利、生鲜、百货、购物中心、快消品、食品/酒水/鞋服…

探索分布式技术--------------注册中心zookeeper

目录 一、ZooKeeper是什么 二、ZooKeeper的工作机制 三、ZooKeeper特点 四、ZooKeeper数据结构 五、ZooKeeper应用场景 5.1统一命名服务 5.2统一配置管理 5.3统一集群管理 5.4服务器动态上下线 5.5软负载均衡 六、ZooKeeper的选举机制 6.1第一次启动选举机制 6.2非…

国债逆回购交易攻略!

购买国债逆回购的步骤可以按照以下流程进行: 1. 开通证券账户: 首先,您需要拥有一个证券账户(也称股票账户)。可以通过选择一家信誉良好、服务优质的证券公司进行线上开户。联系券商服务经理,沟通了解不同公…

烧结钕铁硼永磁体是如何生产的?

烧结钕铁硼永磁体是采用粉末冶金法生产的,从备料到成品发货一般要经过十几个工艺环节,在不同阶段还包括若干次检测分析。 整个生产过程是一个系统工程,环环相扣。一般我们将生产磁体毛坯的过程称为前道生产环节,将毛坯加工成最终…

分布式事务 - 个人笔记 @by_TWJ

目录 1. 传统事务1.1. 事务特征1.2. 事务隔离级别1.2.1. 表格展示1.2.2. oracle和mysql可支持的事务隔离级别 2. 分布式事务2.1. CAP指标2.2. BASE理论2.3. 7种常见的分布式事务方案2.3.1. 2PC2.3.2. 3PC2.3.3. TCC2.3.3.1. TCC的注意事项:2.3.3.2. TCC方案的优缺点…

计算机网络 Cisco虚拟局域网划分

一、实验内容 1、分别把交换机命名为SWA、SWB 2、划分虚拟局域网 valn ,并将端口静态划分到 vlan 中 划分vlan 方法一:在全局模式下划分vlan,在SWA交换机上创建三个vlan,分别为vlan2,vlan3,vlan4。 方…

OpenCV的查找命中或未命中

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV4.9更多形态转换 下一篇:OpenCV系列文章目录(持续更新中......) 目标 在本教程中,您将学习如何使用 Hit-or-Miss 转换(也称为 Hit-and-Miss 转…

树莓派驱动开发--驱动文件代码的浅度分析(以iic的为例)

前言:我使用的代码是正点原子的驱动代码,我们借鉴学习,看多了别人优秀的代码是我们自主完成代码编写的前提! 一. 总体层面梳理 总线-驱动-设备 模型 --把不同功能的外设归类,然后实现统一接口,无法归类的使用虚拟总线来形容,从而实现总线-驱动-设备模型. --为什么要这样?比…

C/C++基础----指针

指针的定义 在c/c中,有一个特殊的变量指向我们电脑中某个内存地址,进而可以让我们操作这段内存,指的就是指针类型 语法: int a 10; int* p &a;&符号是取出某个变量的内存地址 把这个内存地址赋值给一个变量p&#xff…

Java代码基础算法练习-拆分一个三位数的个位、十位、百位-2024.04.14

任务描述:输入一个三位数,逆序输出这个三位数的个位、十位、百位对应的数字,用空格分开。 任务要求: 代码示例: package April_2024;import java.util.Scanner; public class a240414 {public static void main(Strin…