在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 GoBasic

go 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 main

import "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,可以在使用模块管理的项目中正常工作。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CMake基础语法

目录 概述一、示例引入二、语法规则三、变量四、控制结构4.1 条件判断4.2 循环语句4.2.1 foreach循环4.2.2 while循环4.2.3 break、continue 五、函数六、文件操作七、环境配置7.1 设置交叉编译7.2 作用域7.3 属性 八、补充8.1 数学运算math 概述 首先我们都知道Makefile带来的…

堆放砖块-第12届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第47讲。 堆放砖块&#xf…

【C语言】指针篇-初识指针(1/5)

🌈个人主页:是店小二呀 🌈C语言笔记专栏:C语言笔记 🌈C笔记专栏: C笔记 🌈喜欢的诗句:无人扶我青云志 我自踏雪至山巅 文章目录 **内存和地址(知识铺垫(了解即可))**如何理解编址**指针变量*…

海外短剧系统开发:引领全球短剧新潮流,打造跨文化娱乐新体验

随着全球化和互联网的快速发展,跨文化娱乐已经成为人们日常生活中不可或缺的一部分。海外短剧作为一种新颖、便捷的娱乐形式,正逐渐受到越来越多观众的喜爱。为了满足广大用户的需求,我们荣幸地推出全新的海外短剧系统开发方案,旨…

YOLOv8最新改进系列:融合DySample超轻量动态上采样算子,低延迟、高性能,目前最新上采样方法!!!遥遥领先!

YOLOv8最新改进系列:融合DySample超轻量动态上采样算子,低延迟、高性能,目前最新上采样方法!!!遥遥领先! DySample超轻量动态上采样算子全文戳这!here! 详细的改进教程以及源码&am…

最新版守约者二级域名分发系统

主要功能 二级域名管理: 我们的系统提供全面的二级域名管理服务,让您轻松管理和配置二级域名。 域名分发:利用我们先进的域名分发技术,您可以自动化地分配和管理域名,确保每个用户或客户都能及时获得所需的域名资源。…

OJ刷题日记:1、双指针(2)

目录 1、11.盛最多的水 2、LCR 179.查找总价格为目标值的两个商品 3、15.三数之和 4、18.四数之和 1、11.盛最多的水 题目: 11. 盛最多水的容器 - 力扣(LeetCode)https://leetcode.cn/problems/container-with-most-water/description/ …

45---M.2 SSD电路设计

视频链接 M.2 SSD硬件电路设计01_哔哩哔哩_bilibili M.2 SSD电路设计 1、M.2简介 1.1、M.2基本介绍 M.2接口也叫NGFF,英文全称Next Generation Form Factor。M.2接口是为超极本(Ultrabook)量身定做的新一代接口标准,是Intel推…

【微服务-Nacos】手把手教你Nacos集群部署,不会的来找我!

前面我们介绍了Nacos单机部署和微服务接入Nacos注册中心的操作步骤,但单机部署是分布式应用的大忌,在分布式架构中,任何单点都可能成为系统的瓶颈。因此关于Nacos部署,通常都是采用集群部署来为系统带来高可用性。这里我们来介绍下…

Python大数据分析——一元与多元线性回归模型

Python大数据分析——一元与多元线性回归模型 相关分析概念示例 一元线性回归模型概念理论分析函数示例 多元线性回归模型概念理论分析示例 线性回归模型的假设检验模型的F检验理论分析示例 模型的T检验理论分析示例 相关分析 概念 a 正相关;b 负相关;c…

基于ollama搭建本地chatGPT

ollama帮助我们可以快速在本地运行一个大模型,再整合一个可视化页面就能构建一个chatGPT,可视化页面我选择了chat-ollama(因为它还能支持知识库,可玩性更高),如果只是为了聊天更推荐chatbox 部署步骤 下载…

【BMW】Bayerische Motoren Werke AG

文章目录 BMW 3系 X3X1、X2、奇瑞捷豹路虎、特斯拉ES200 vs BMW 325i M 运动曜夜Price历代宝马3系列 BMW 3系 X3 3 系参数 X1、X2、奇瑞捷豹路虎、特斯拉 ES200 vs BMW 325i M 运动曜夜 (右到左看) Price 2024.04.13 24年4月2,来自小…

【随笔】Git 基础篇 -- 远程与本地提交的差异 git clone(二十六)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

JVM—jps、jstat、jinfo、jmap、jstack的使用

JVM—jps、jstat、jinfo、jmap、jstack的使用 jps jps全称:Java Virtual Machine Process Status Tool 可以查看Java进程,相当于Linux下的ps命令,只不过它只列出Java进程。 jps:列出Jav程序ID和Main函数名称 jps -q:只输出进程ID jps -m …

故障诊断 | Matlab实现基于小波包结合卷积神经网络DWT-CNN实现电缆故障诊断算法

故障诊断 | Matlab实现基于小波包结合卷积神经网络DWT-CNN实现电缆故障诊断算法 目录 故障诊断 | Matlab实现基于小波包结合卷积神经网络DWT-CNN实现电缆故障诊断算法分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现基于小波包结合卷积神经网络DWT-CNN实现电…

在k8s 中部署有状态服务MongoDB高可用集群详解(附带镜像)

🐇明明跟你说过:个人主页 🏅个人专栏:《Kubernetes航线图:从船长到K8s掌舵者》 🏅 🔖行路有良友,便是天堂🔖 目录 一、前言 1、k8s简介 2、MongoDB介绍 3、为什么要…

精确号码比例放通算法的设计与实现

精确号码比例放通算法的设计与实现 引言背景问题定义算法设计1. 数据结构2. 算法流程3. 伪代码4. C语言实现 结论参考文献 引言 随着通信技术的飞速发展,呼叫中心和电信运营商面临着日益增长的呼叫管理需求。在某些情况下,为了确保服务质量或者遵守特定…

⭐Unity 里调用弹出电脑系统文件选择窗 (选择图片/文件)

今天遇到的需求要从Uinty里调用选择程序外的图片,类似手机环境下拿图库的照片一样。 效果如下: 话不多说 直接上代码! 1.编辑器模式下 using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO; using Syst…

[阅读笔记2][FLAN]FINETUNED LANGUAGE MODELS ARE ZERO-SHOT LEARNERS

接下来这篇是谷歌的FLAN,提出了指令微调这一新范式,在2022年发表。 这篇论文指出GPT3的zero-shot性能相比few-shot性能差太多了。他们发现如果对预训练模型进行指令微调能使zero-shot性能显著提升,下面右图显示指令微调后zero-shot比GPT3 few…

[Spring Cloud] (3)gateway令牌token拦截器

文章目录 集成redisNacos配置增加 redis配置配置pomredis配置RedisConfigredis序列化工具FastJson2JsonRedisSerializer测试 令牌校验拦截器nacos配置拦截器代码微服务登录接口实现 最终效果-登录接口与数据接口 本文gateway与微服务已开源到gitee 杉极简/gateway网关阶段学习 …