「GO基础」在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/825380.shtml

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

相关文章

C# 整数转罗马数字

罗马数字包含以下七种字符:I,V,X,L,C,D和M。 例如,罗马数字2写做 II ,即为两个并列的 1。12 写做XII,即为XII。27写做 XXVII,即为XXV II 。 通常情况下,罗马数字中小的数字在大的数字…

一个不同长度元素排序找行和列的需求

1、需求:三种长度的元素,分别是4、8、12,每一行的长度是12,超过12就排到下一行,我们将这三种类型的多个元素打乱,然后找到这些元素对应的行和列。 如下图: 2、解决思路: 创建一个长…

Ubuntu 20.04.6下载

下载地址:https://cn.ubuntu.com/download 下载版本:ubuntu-20.04.6-desktop-amd64.iso

OpenHarmony实战开发-如何实现进入页面,点击动画卡片,动画播放并且文本发生变化。

介绍 Lottie是一个适用于OpenHarmony的动画库,它可以解析Adobe After Effects软件通过Bodymovin插件导出的json格式的动画,并在移动设备上进行本地渲染, 可以在各种屏幕尺寸和分辨率上呈现,并且支持动画的交互性,通过…

C++stack,queue,priority_queue容器(个人笔记)

C栈队列优先级队列 1.熟悉stack接口以及使用1.1stack的接口1.2stack的模拟实现1.3stack的一些笔试题 2.熟悉queue接口以及使用2.1queue的接口2.2queue的模拟实现2.3queue的笔试题 3.熟悉priority_queue的接口以及使用(底层堆)3.1priority_queue的接口3.2…

spdlog C++日志管理 安装和下载

下载地址 https://github.com/gabime/spdlog?tabreadme-ov-file 使用git拉取代码 按照操作进行编译 点击spdlog.sln,用vs2019打开,进行编译debug x64 每项都编译一下,会生成安装包 安装包下载路径 https://download.csdn.net/download…

【AI学习中常见专业英文缩写词的解释】

前言: 为了看着不无聊,文中插入了一些AI生成的狗图片 AI(Artificail Intelligence)人工智能: 让机器模拟和展示人类智能的技术。 GAI(Generative Artificail Intelligence)生成式人工智能: 利用复杂的算法、模型和规则,从大规…

mysql数据库表的数据显示到前端tableView

首先我们在ui视图设计中引入TableView, 定义一个model QSqlQueryModel *modelnew QSqlQueryModel(ui->tableView);model->setQuery(query);//将查询结果绑定到模型上ui->tableView->setModel(model); 将tableView内容设置成model然后就可以出现数据库的数据。示…

2.8 构建gradle环境

构建gradle环境 目录一、安装Java Development Kit (JDK)二、下载Gradle三、解压Gradle四、配置环境变量五、验证安装六、gradle构建java项目七、eclipse配置gradle 目录 一、安装Java Development Kit (JDK) Gradle是基于Java开发的,所以首先需要安装JDK。你可以从…

春秋云境:CVE-2022-32991[漏洞复现]

从CVE官网查询该漏洞相关信息 该漏洞是由于welcome.php中的eid参数包含了SQL注入漏洞 则我们的目标就在于寻找welcome.php地址以及相关的可注入eid参数 开启靶机 先在页面正常注册、登录一个账号。密码随便填 进入了home目录,这里有三个话题可以选择开启 随便选…

【服务器部署篇】Linux下Nginx的安装和配置

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是,产…

【MySQL】20. 使用C语言链接

mysql connect mysql的基础,我们之前已经学过,后面我们只关心使用 要使用C语言连接mysql,需要使用mysql官网提供的库,大家可以去官网下载 我们使用C接口库来进行连接 要正确使用,我们需要做一些准备工作: …

从零构建生产级 AI 应用 ChatWithPDF

前言 目前 AIGC 的浪潮很火,不管你是什么方向的程序员,都可以通过大模型去构建自己的 App,但是搜索资料学习的时候发现: 目前构建 AI 应用的中文资源比较少,大多数都是英文的。教程大多是 demo 级别,没有…

claude3会员版怎么在国内充值

由于国内尚未正式开放注册,许多用户可能感到有些不便。但在这个时代,如果没有几个得心应手的AI工具链接,似乎都与时代脱节了。今天推荐一个非常实用的Claude3镜像站点: https://hiclaude3.cn 这个站点不仅拥有简洁明了的对话操作…

车联网大数据与人工智能一体化:开启智慧出行新时代

随着物联网技术的快速发展,车联网已经成为了汽车行业的重要趋势之一。而在车联网的发展过程中,大数据和人工智能的应用也日益成为关键因素。本文将探讨如何将大数据与人工智能一体化应用于车联网,以实现智慧出行的目标。 尤其是近来国内的华为…

JavaSE备忘录(未完)

文章目录 基本数据类型println 小知识除法( / ) 和 Infinity(无穷) 小知识除法InfinityInfinity 在除法中正负判断 求余(%) 小知识 基本数据类型 除 int、char 的包装类分别为 Integer、Character 外,其余基本数据类型的第一个字母大写就是它的包装类。 println 小…

spingboot3项目创建入门体验

spingboot3流程体验 项目简易打包部署 Spring Initializr 创建向导 spingboot3流程体验 先在IDEA创建一个新的空项目 然后在项目中创建一个模块 在pom.xml文件中添加maven配置继承spingboot3父项目和web开发场景启动器 创建启动springboot项目的主入口程序文件 import org.sp…

初识C++ · 类和对象(中)(1)

目录 1 类的6个默认成员函数 2 构造函数 3 析构函数 3 拷贝构造函数 1 类的6个默认成员函数 class Date { public:private:}; 这是一个空类,试问里面有什么? 可能你会觉得奇怪,明明是一个空类,却问里面有什么。其实一点也不…

数据融合概念解析:特征融合与特征交互

特征融合与特征交互的区别 我是目录 特征融合与特征交互的区别前言三者关系三者定义特性融合(Feature Fusion):特征拼接(Feature Concatenation):特征交互(Feature Interaction): 特征融合和特征交互关键的不同点数据处理目的应用 总结 前言 遥感系列第14篇。遥感图像处理方向…

js解密心得,记录一次抓包vue解密过程

背景 有个抓包结果被加密了 1、寻找入口,打断点 先正常请求一次,找到需要的请求接口。 寻找入口,需要重点关注几个关键字:new Promise 、new XMLHttpRequest、onreadystatechange、.interceptors.response.use、.interceptors.r…