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

news2024/12/24 9:18:38

文章目录

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

在这里插入图片描述

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

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

相关文章

OpenCV 学习笔记2 C++

1.图像直方图 直方图(Histogram)是图像处理中常用的工具,它表示图像中每个像素强度值的分布情况。在OpenCV中,可以使用 cv::calcHist 函数来计算图像的直方图。 图像直方图是一种展示图像像素强度分布的统计图表。它显示了图像中…

Eclipse+Java+Swing实现图书信息管理系统-TXT存储信息

一、系统介绍 1.开发环境 操作系统:Win10 开发工具 :Eclipse2021 JDK版本:jdk1.8 存储方式:Txt文件存储 2.技术选型 JavaSwingTxt 3.功能模块 4.工程结构 5.系统功能 1.系统登录 管理员可以登录系统 2.查看图书 管理员…

Python数据分析案例42——基于Attention-BiGRU的时间序列数据预测

承接上一篇的学术缝合,排列组合模型,本次继续缝合模型演示。 Python数据分析案例41——基于CNN-BiLSTM的沪深300收盘价预测-CSDN博客 案例背景 虽然我自己基于各种循环神经网络做时间序列的预测已经做烂了.....但是还是会有很多刚读研究生或者是别的领…

Django处理枚举(枚举模型)以及source的使用

Django处理枚举-枚举模型 1、定义模型类、序列化器类2、对上面这些场景使用source参数3、支持连表查询4、自定义序列化输出方法5、案例5 1、定义模型类、序列化器类 定义模型类models.py;项目模型类、接口模型类、用例模型类 from django.db import modelsclass T…

【linux深入剖析】深入理解软硬链接 | 动静态库的制作以及使用

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 1.理解软硬链接1.1 操作观…

AskManyAI:一个GPT、Claude、Gemini、Kimi等顶级AI的决斗场

一直以来很多人问我能不能有个稳定,不折腾的全球AI大模型测试网站,既能够保证真实靠谱,又能够保证稳定、快速,不要老动不动就挂了、出错或者漫长的响应。 直到笔者遇到了AskManyAI,直接就惊艳住了! 话不多…

公布应用程序

📕作者简介: 过去日记,致力于Java、GoLang,Rust等多种编程语言,热爱技术,喜欢游戏的博主。 📘相关专栏Rust初阶教程、go语言基础系列、spring教程等,大家有兴趣的可以看一看 📙Jav…

亚马逊云科技官方重磅发布GenAI应用开发学习路线(全免费)

今天小李哥给大家分享的是亚马逊云科技(AWS)最近官方发布的GenAI应用开发最佳学习路线,不仅内容非常全面更主要的是全部免费!大家动动小手就能成为GenAI开发大🐮! 1️⃣这个GenAI开发学习路线包括什么&…

.cur 鼠标光标编辑器

详解透明贴图和三元光栅操作 - CodeBus 鼠标指针文件格式解析——Windows(二) (qq.com) [C/C] RGBA数组生成Windows下的ico文件_c ico格式-CSDN博客 色环设计 - CodeBus 左键绘制 右键选颜色 ctrl右键设置鼠标热点 F1导出.cur文件 //代码来源&…

web3项目自动连接小狐狸以及小狐狸中的各种“地址”详解

刚做web3的时候,比较迷糊的就是人们口中说的各种地址,小狐狸钱包地址,私钥地址,跳转地址,接口地址,交易地址,等等XX地址,常常感觉跟做链的同事们说话不在一个频道。 这一小节&#x…

力扣:49. 字母异位词分组

知识点: 散列函数 散列函数能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位: 1. 直接寻址法:取关键字或关键字的某个线性函数值为散列地址。即H(key)key或H&a…

CentOS 7安装Zookeeper

说明:本文介绍如何在CentOS 7操作系统下使用Zookeeper 下载安装 首先,去官网下载所需要安装的版本,我这里下载3.4.9版本; 上传到云服务器上,解压 tar -xvf zookeeper-3.4.9.tar.gz修改配置 进入Zookeeper目录下的co…

ssm049基于Vue.js的在线购物系统的设计与实现+vue

在线购物系统 摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于在线购物系统当然也不能排除在外,随着网络技术的不断成熟,带动了在线购物系统,它彻底改…

设计模式代码实战-外观模式

1、问题描述 小明家的电源总开关控制了家里的三个设备:空调、台灯和电视机。每个设备都有独立的开关密码,分别用数字1、2和3表示。即输入1时,空调关闭,输入2时,台灯关闭,输入3时,电视机关闭&am…

排序总结Java

文章目录 排序算法复杂度总结插入排序希尔排序归并排序快速排序堆排序 排序算法复杂度总结 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 插入排序 public class Sort {// 插入排序public int[] inserSort(int[] nums){for (int i 1; i < nums.length;…

科技助力输电线安全隐患预警,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建电力设备场景下输电线安全隐患目标检测预警系统

电力的普及让我们的生活变得更加便利&#xff0c;四通八达的电网连接着生活的方方面面&#xff0c;电力能源主要是依托于庞大复杂的电网电力设备进行传输的&#xff0c;有效地保障电网场景下输电线的安全对于保障我们日常生活所需要的电力有着重要的意义&#xff0c;但是电力设…

Redis报错:CROSSSLOT Keys in request don‘t hash to the same slot的解决方案

最近&#xff0c;项目上线的时候&#xff0c;出现了一个Redis的报错&#xff1a;CROSSSLOT Keys in request dont hash to the same slot&#xff0c;这个在内网环境下无法复现&#xff0c;因为正式环境的Redis是cluster集群模式&#xff0c;而我们内网环境是单机模式。(后面我…

Django第三方功能的使用

Django第三方功能的使用 Django REST framework前言1、Django--Restframework--coreapi版文档BUG:AssertionError: coreapi must be installed for schema support.How to run Django with Uvicorn webserver?2、序列化类 Serializer的使用模型序列化类 ModelSerializer的使用…

再写-全景拼接

全景拼接 1. 将读取进行灰度转化&#xff0c;并且输出图像&#xff0c;关键点和计算描述 import cv2 import numpy as np# 将读取进行灰度转化&#xff0c;并且输出图像&#xff0c;关键点和计算描述 image_left cv2.imread("C:\\Users\\HONOR\\Desktop\\image\\pinjie…

001_IoT/物联网通信协议基础: HTTP、Websocket、MQTT、AMQP、COAP、LWM2M一文搞懂

001_IoT/物联网通信协议基础: HTTP、Websocket、MQTT、AMQP、COAP、LWM2M一文搞懂 文章目录 001_IoT/物联网通信协议基础: HTTP、Websocket、MQTT、AMQP、COAP、LWM2M一文搞懂创作背景通信模型ISO/OSI七层模型 和 TCP/IP四层模型网络通信数据包格式&#xff08;Ethernet II&…