当前位置: 首页 > news >正文

Golang学习01:Go安装和配置+Vscode、GoLand安装激活+Go环境变量避坑的超详细教程

在这里插入图片描述

🪁🍁 希望本文能给您带来帮助,如果有任何问题,欢迎批评指正!🐅🐾🍁🐥


文章目录

  • 一、背景
  • 二、Go语言安装
    • 2.1 Go语言环境安装
    • 2.2 Go语言环境验证
    • 2.3 其他配置
  • 三、开发环境搭建
    • 3.1 GoLand环境搭建
      • 3.1.1 GoLand安装
      • 3.1.2 GoLand激活
    • 3.2 Vscode环境搭建
      • 3.2.1 Vscode安装
      • 3.2.2 Go开发Vscode基本插件
        • 3.2.2.1 Vscode中文插件
        • 3.2.2.2 Go环境插件
        • 3.2.2.3 代码阅读定位插件Outline Map
        • 3.2.2.4 代码补全插件Golang postfix
        • 3.2.2.5 CodeRunner运行插件
        • 3.2.2.6 Go本身开发工具
        • 3.2.2.7 F5命令快捷调试和运行
      • 3.2.3 配置包目录说明
    • 3.3 可能遇到的问题
  • 四、入门案例HelloWorld
    • 4.1 GoLand环境开发HelloWorld
    • 4.2 Vscode环境开发HelloWorld
  • 五、Go环境变量新手避坑
    • 5.1 GOPATH
    • 5.2 go module
  • 六、总结
  • 七、参考资料

一、背景

近年来,由于Go语言优秀的性能,不少互联网大小厂都开始热衷于使用Go语言进行服务器、云原生、网络编程等开发任务。随着Go的热潮的兴起,作者也是对Go语言颇有兴趣,因此,开一篇Go开发的专栏,记录一下学习过程并且分享一些学习经验。本篇文章将详细介绍Go语言的环境安装以及开发环境的安装步骤。


二、Go语言安装

2.1 Go语言环境安装

首先是Go语言环境的安装,由于Go语言官网下载速度比较慢,这里推荐大家使用Go语言中文网下载即可,而且Go语言官网和这个中文网发版基本同步。

大家可以自行根据系统来选择不同的版本,本文以Windows为例:

在这里插入图片描述

点击下载后,会在下载文件夹中出现上面选择的文件,由于文件属于安装包,还是需要解压安装的,这里直接双击即可呈现下图,然后选择Next:

在这里插入图片描述

然后勾选同意之后,继续选择Next:

在这里插入图片描述

然后再选择安装目录,默认安装目录是C盘,但是你懂的,我这里调整为E盘下面:

在这里插入图片描述

一直选择下一步,最后安装完成后应该呈现如下图:

在这里插入图片描述

2.2 Go语言环境验证

有过各种环境安装经验的朋友会知道,安装完之后需要在控制台进行验证一下,例如这里先Win + R唤醒运行窗口之后,输入cmd打开控制台窗口:

在这里插入图片描述

然后在控制台输入go version,可查看安装的go版本,检查其是否安装成功。

在这里插入图片描述

有朋友可能会有疑问,明明都没有配置环境变量,咋能直接使用go的命令?那是因为在高版本里安装时会默认在环境变量中配置,可以先Win + R唤醒运行窗口之后,输入sysdm.cpl打开环境变量,能够看到安装时就已经帮忙配置好了环境变量:

在这里插入图片描述

2.3 其他配置

在使用Go进行开发时,可能我们需要借用Go下载一些包什么的,但是默认官网源在国内访问不到,默认官网源如下:

https://proxy.golang.org,direct

因此,我们需要配置GOPROXY(代理)。在控制台输入go env,可查看go的初始环境配置,然后执行以下命令,进行修改代理,将其替换成国内镜像源。Windows 下设置 GOPROXY 的命令为:

go env -w GOPROXY=https://goproxy.cn,direct

MacOS 或 Linux 下设置 GOPROXY 的命令为:

export GOPROXY=https://goproxy.cn

重新执行go env查看Go配置,结果如下图:

在这里插入图片描述


三、开发环境搭建

Go语言开发使用各种编辑器都可以,比如vim、Sublim Text,但是这些开发工具不够智能,在这里,本文推荐使用GoLand或者Vscode去进行开发。

3.1 GoLand环境搭建

3.1.1 GoLand安装

接下来,我们去GoLand官网下载,安装步骤如下:

https://www.jetbrains.com.cn/go/

在这里插入图片描述

点击下载后,会在下载文件夹中出现对应的文件版本,由于文件属于安装包,还是需要解压安装的,这里直接双击即可呈现下图,然后选择下一步:

在这里插入图片描述
然后再选择安装目录,默认安装目录是C盘,但是你懂的,我这里调整为E盘下面的developtools目录下:

在这里插入图片描述

然后可以都勾选上,再点击下一步:

在这里插入图片描述
最后等待安装完成,重启电脑即可。

3.1.2 GoLand激活

由于GoLand是付费软件,因此要使用就需要付费或者科学的方式进行使用。当然这里直接跳跃到科学使用🧐:

方式一:直接使用激活码

76OEAYRJXK-eyJsaWNlbnNlSWQiOiI3Nk9FQVlSSlhLIiwibGljZW5zZWVOYW1lIjoi5rC45LmF5r+A5rS7IHd3d8K3YWppaHVvwrdjb20iLCJsaWNlbnNlZVR5cGUiOiJQRVJTT05BTCIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaWNlbnNlUmVzdHJpY3Rpb24iOiIiLCJjaGVja0NvbmN1cnJlbnRVc2UiOmZhbHNlLCJwcm9kdWN0cyI6W3siY29kZSI6IkdPIiwicGFpZFVwVG8iOiIyMDI1LTAyLTIzIiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJSUzAiLCJwYWlkVXBUbyI6IjIwMjUtMDItMjMiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IkRNIiwicGFpZFVwVG8iOiIyMDI1LTAyLTIzIiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJDTCIsInBhaWRVcFRvIjoiMjAyNS0wMi0yMyIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUlNVIiwicGFpZFVwVG8iOiIyMDI1LTAyLTIzIiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJSU0MiLCJwYWlkVXBUbyI6IjIwMjUtMDItMjMiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUEMiLCJwYWlkVXBUbyI6IjIwMjUtMDItMjMiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IkRTIiwicGFpZFVwVG8iOiIyMDI1LTAyLTIzIiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJSRCIsInBhaWRVcFRvIjoiMjAyNS0wMi0yMyIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUUEiLCJwYWlkVXBUbyI6IjIwMjUtMDItMjMiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJDIiwicGFpZFVwVG8iOiIyMDI1LTAyLTIzIiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJSU0YiLCJwYWlkVXBUbyI6IjIwMjUtMDItMjMiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUk0iLCJwYWlkVXBUbyI6IjIwMjUtMDItMjMiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IklJIiwicGFpZFVwVG8iOiIyMDI1LTAyLTIzIiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJEUE4iLCJwYWlkVXBUbyI6IjIwMjUtMDItMjMiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IkRCIiwicGFpZFVwVG8iOiIyMDI1LTAyLTIzIiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJEQyIsInBhaWRVcFRvIjoiMjAyNS0wMi0yMyIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUFMiLCJwYWlkVXBUbyI6IjIwMjUtMDItMjMiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJSIiwicGFpZFVwVG8iOiIyMDI1LTAyLTIzIiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJSU1YiLCJwYWlkVXBUbyI6IjIwMjUtMDItMjMiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiV1MiLCJwYWlkVXBUbyI6IjIwMjUtMDItMjMiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlBTSSIsInBhaWRVcFRvIjoiMjAyNS0wMi0yMyIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQQ1dNUCIsInBhaWRVcFRvIjoiMjAyNS0wMi0yMyIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJBSUwiLCJwYWlkVXBUbyI6IjIwMjUtMDItMjMiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJTIiwicGFpZFVwVG8iOiIyMDI1LTAyLTIzIiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IkRQIiwicGFpZFVwVG8iOiIyMDI1LTAyLTIzIiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBEQiIsInBhaWRVcFRvIjoiMjAyNS0wMi0yMyIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQUlIiLCJwYWlkVXBUbyI6IjIwMjUtMDItMjMiLCJleHRlbmRlZCI6dHJ1ZX1dLCJtZXRhZGF0YSI6IjAyMjAyNTAxMjRQUEFNMDAwMDA1QSIsImhhc2giOiI2NTY4OTk0My8wOjE5MzY0ODQyNDEiLCJncmFjZVBlcmlvZERheXMiOjcsImF1dG9Qcm9sb25nYXRlZCI6ZmFsc2UsImlzQXV0b1Byb2xvbmdhdGVkIjpmYWxzZSwidHJpYWwiOmZhbHNlLCJhaUFsbG93ZWQiOnRydWV9-e+NaDZflm3hQBLA3VaFchg18w61XVe2i9j6Pi3yqsEG7nxzAQq2TpWQdh0KLszU6Z5qo+n0N7MTpA2Mw68sT665QsNrTaVQwAfrjDI5NZYPgFhstAd/KxMCnLfaJojX06caEx7tX+RIrTlDCN+W3p8D1urd4xG9+HB7vk7TaaY9DuJ5v+dLTTUROZFfNuEoPwmlRNZtBRJN3CMy6Qr0NGhmY9kumZJ6GY5T9a0JTIQFqARjPzSaNbfk+XsQhISSv+3uOaZGD//XbtGKHK0np9DdBOIgwnx892RzELAlMnu0BfluVOcJwo9brRB4nWScCp0jLMgXHYrheDCeuVfNw3A==-MIIETDCCAjSgAwIBAgIBETANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTI0MDkyMDEyMTEyN1oXDTI2MDkyMjEyMTEyN1owHzEdMBsGA1UEAwwUcHJvZDJ5LWZyb20tMjAyNDA5MjAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7SH/XcUoMwkDi8JJPzXWWHWFdOZdrP2Dqkz2W8iUi650cwz2vdPEd0tMzosLAj7ifkFEHUyiuEcL//q9d9Op7ZsV23lpPXX8tFMLFwugoQ9D8jDLT/XP9pp/YukWkKF5jpNbaCvsVQkDdYkArBkYvhH3aN4v9BkEsXahfgLLOPe4IG2FDJNf9R4to9V1vt+m2UVJB0zV4a/sVMKUZLgqKmKKKOKoLrE3OjBlZlb+Q0z2N5dsW0hDEVRFGmBUAbHN/mp44MMMvEIFKfoLIGpgic92P2O6uFh75PI7mcultL6yuR48ajErx8CjjQEGOSnoq/8hD+yVE+6GW2gJa2CPvAgMBAAGjgZkwgZYwCQYDVR0TBAIwADAdBgNVHQ4EFgQUb5NERj05GyNerQ/Mjm9XH8HXtLIwSAYDVR0jBEEwP4AUo562SGdCEjZBvW3gubSgUouX8bOhHKQaMBgxFjAUBgNVBAMMDUpldFByb2ZpbGUgQ0GCCQDSbLGDsoN54TATBgNVHSUEDDAKBggrBgEFBQcDATALBgNVHQ8EBAMCBaAwDQYJKoZIhvcNAQELBQADggIBALq6VfVUjmPI3N/w0RYoPGFYUieCfRO0zVvD1VYHDWsN3F9buVsdudhxEsUb8t7qZPkDKTOB6DB+apgt2ZdKwok8S0pwifwLfjHAhO3b+LUQaz/VmKQW8gTOS5kTVcpM0BY7UPF8cRBqxMsdUfm5ejYk93lBRPBAqntznDY+DNc9aXOldFiACyutB1/AIh7ikUYPbpEIPZirPdAahroVvfp2tr4BHgCrk9z0dVi0tk8AHE5t7Vk4OOaQRJzy3lST4Vv6Mc0+0z8lNa+Sc3SVL8CrRtnTAs7YpD4fpI5AFDtchNrgFalX+BZ9GLu4FDsshVI4neqV5Jd5zwWPnwRuKLxsCO/PB6wiBKzdapQBG+P9z74dQ0junol+tqxd7vUV/MFsR3VwVMTndyapIS+fMoe+ZR5g+y44R8C7fXyVE/geg+JXQKvRwS0C5UpnS5FcGk+61b0e4U7pwO20RlwhEFHLSaP61p2TaVGo/TQtT/fWmrtV+HegAv9P3X3Se+xIVtJzQsk8QrB/w52IB3FKiAKl/KRn1egbMIs4uoNAkqNZ9Ih2P1NpiQnONFmkiAgeynJ+0FPykKdJQbV3Mx44jkaHIif4aFReTsYX1WUBNu/QerZRjn4FVSHRaZPSR5Oi82Wz0Nj7IY9ocTpLnXFrqkb/Kt3S6B9s2Kol3Lr1ElYA

方式二:利用jetbra来进行破解

利用jetbra来进行破解的步骤可以参考此篇文章:《【Go】运行自己的第一个Go程序》。

3.2 Vscode环境搭建

3.2.1 Vscode安装

使用GoLand和Vscode去开发Go语言只能说各有千秋,GoLand是收费的,使用起来会更加重一点,但是不需要安装各种包,Vscode是免费的,会更加轻量级一点,但是需要安装一些包,大家自行感受即可🧐。

接下来直接来介绍如何去安装Vscode,我们先去Vscode官网下载,安装步骤如下:

https://code.visualstudio.com/

在这里插入图片描述

点击下载后,会在下载文件夹中出现对应的文件版本,由于文件属于安装包,还是需要解压安装的,这里直接双击即可呈现下图,先点击我同意,然后选择下一步:

在这里插入图片描述
然后再选择安装目录,默认安装目录是C盘,但是你懂的,我这里调整为E盘下面的developtools目录下:

在这里插入图片描述

然后再直接选择下一步:

在这里插入图片描述

全部勾选后,然后再直接选择下一步安装即可:

在这里插入图片描述
当出现如下图的进度条时说明程序已经正在安装了,最后跳出安装完成的界面就说明安装的步骤全部结束!

在这里插入图片描述

3.2.2 Go开发Vscode基本插件

由于上文对比Vscode和Goland已经提及到了Vscode明显的问题,要用Vscode运行go程序是需要安装一些扩展环境的,因此下文会介绍我们在使用Vscode会通常使用到的一些插件环境安装。

3.2.2.1 Vscode中文插件

首先市面上的大部分IDE工具都采用的是英文,因此如果有需求,可以将我们的Vscode改成中文版,这个微软官方是有提供相关插件的。
点击左侧菜单栏最后一项管理扩展,在搜索框中输入chinese ,选中结果列表第一项,点击install安装,安装后重启即可。

在这里插入图片描述

3.2.2.2 Go环境插件

微软针对于用Vscode进行Go语言的开发也是有提供对应的语言支持插件的,同样的点击左侧菜单栏最后一项管理扩展,在搜索框中输入Go ,选中结果列表第一项,点击install安装。

在这里插入图片描述

3.2.2.3 代码阅读定位插件Outline Map

Outline Map这个插件对于阅读代码源码,进行代码的方法或函数跟踪定位是非常方便的,推荐大家安装。

在这里插入图片描述

3.2.2.4 代码补全插件Golang postfix

Golang postfix这个插件对于写Go代码的时候比较方便,不仅有代码提示还有代码一键补全功能。

在这里插入图片描述

3.2.2.5 CodeRunner运行插件

我们除了在终端中go build xx和go run xx来运行代码,也可以利用工具来直接运行我们的代码,而不是通过终端的指令来运行。因此,可以添加插件:CodeRunner

在这里插入图片描述

3.2.2.6 Go本身开发工具

有印象的朋友会记起来我们在安装Go语言环境那一节的时候提到了额外的配置,当时配置GOPROXY(代理)也就是为了此刻能够顺利下载扩展插件,不然由于墙的问题会导致一些扩展包下载失败。

在这里插入图片描述

3.2.2.7 F5命令快捷调试和运行

在上一个小节里利用CodeRunner引入的按钮可以运行go文件,但是需要时刻记得按下ctrl+s保存后再执行。除此之外,我们可以利用F5快捷键快速调试和运行,但是其依赖于dlv包,该包的安装方式依赖于命令:go install -v github.com/go-delve/delve/cmd/dlv@latest。

在这里插入图片描述

3.2.3 配置包目录说明

3.2.2章节里的 3.2.2.3 小节Go本身开发工具中有提示一些插件下载,那么那些通过go命令安装的插件文件存放到哪了呢?这一小节就来做个总结。首先在终端里输入go env命令可查看go相关环境变量,会发现GOPATH为用户家目录。

在这里插入图片描述

在这里插入图片描述
点进去这个家目录下的go文件夹里,我们会发现里面有两个包文件:

在这里插入图片描述
然后继续点进去bin目录里,我们会发现3个基本的可执行文件,下面将总结它们各自功能及命令安装方式,大家安装这3个扩展包基本就能方便的把go程序跑起来了,如果后来开发中有其他需要,可以自行利用go命令安装,最后都能在家目录下找到所下载的文件。

在这里插入图片描述

首先对这3个扩展包做总结:

文件名作用安装命令
dlvgo-delve是Go语言的调试利器go install -v github.com/go-delve/delve/cmd/dlv@latest
gopls官方提供的实现语言服务器协议LSP的Language Server,具有构建、格式化、自动完成等功能。go install -v golang.org/x/tools/gopls@latest
staticcheck静态代码检查作用go install -v honnef.co/go/tools/cmd/staticcheck@latest

然后对这两个包目录做一下总结:

名称作用
pkg目录常用于缓存第三方包文件
bin目录常用于存放可执行文件:通过go install命令下载的第三方包会放到$GOPATH/go下面的缓存目录,编译好的可执行文件会放到$GOPATH/go/bin

最后对安装包的两个命令也做个总结:

名称作用
go install命令下载的第三方包会放到$GOPATH/go下面的缓存目录,编译好的可执行文件会放到$GOPATH/go/bin
go get命令下载第三方包会放到$GOPATH/go下面的缓存目录,但不会编译,只是为了后面编程用到这些包

3.3 可能遇到的问题

问题1: Go:1:1: expected ‘package‘, found ‘EOF‘原因及解决办法

解决方式: 如果你编写好代码后,运行后一直报Go:1:1: expected ‘package‘, found ‘EOF‘问题,原因大概率是:go项目文件没保存,直接ctrl+s快速保存即可解决。


四、入门案例HelloWorld

4.1 GoLand环境开发HelloWorld

经历过各种环境搭建之后,终于到了实战章节,本节将使用GoLand开发环境来实现一个输出Hello World的小案例。点击New Project新建项目,然后配置一下环境,就可以进行创建Hello World项目。

在这里插入图片描述
点击创建后,生成代码目录如下图:

在这里插入图片描述

其中会自动生成main文件,这里只需对其稍做修改,将其修改为Hello World打印代码,代码如下:

// 声明文件所在的包,每个go文件必须有归属的包
// 在go语言里,go语言的编译程序会试图把这种名字的包编译为可执行的文件。所有用Go语言编译的可执行程序都必须有一个叫main的包。
// 一个可执行程序有且仅有一个main包
package main// 引入程序所需要的包,例如这里打印需要使用fmt包
import "fmt"// main 主函数,程序的入口
func main() {// 控制台打印输出一句话,""里的内容会原样输出fmt.Println("Hello World")
}

然后点击绿色按钮运行,运行后效果如下图:

在这里插入图片描述

看到这,有朋友心里可能会有这样一个问题:它这怎么报红了呢?其实之前作者也是踩了这个坑了的,因为网上的资料也是良莠不齐,而且文章教程可能并没有随着Go语言版本更迭而更新,最终导致配置环境时可能出现莫名奇妙的问题。为了把这个点理清楚,下一节也会着重介绍一下Go的一些环境变量,然后把这个爆红的问题给解决掉,避免后续更多人踩坑😶。

4.2 Vscode环境开发HelloWorld

按照上文步骤配置过一些开发环境后再开发go代码就比较简单了,在工作目录下创建go文件,并编写Hello World打印代码:

在这里插入图片描述

然后再点击Vscode右上角的运行按钮即可,代码执行结果如下:

在这里插入图片描述

到这里就完成了Vscode打印hello world的代码,如果像上图中提示Go:1:1: expected ‘package‘, found ‘EOF‘,我们只需使用ctrl+s保存代码即可。


五、Go环境变量新手避坑

查看 go 的环境变量的命令为go env

在这里插入图片描述

上面打印出来的环境变量有很多,但着重理解并记住这几个环境变量的定义即可:

变量名解释
GOPATHgo 的工作目录
GOROOTgo 的安装目录
GOBINgo 的bin文件目录
GO111MODULEgo mod 开关 on为开启go mod
GOPROXY设置代理来加速模块下载

根据上一节打印Hello World的提醒来看是Go mod 和Go path冲突,因此,下面就着重介绍两者的差异。

5.1 GOPATH

GOPATH 是 Go语言中使用的一个环境变量,它使用绝对路径提供项目的工作目录。GOPATH是早期的设置方式,将工作目录设置 GOPATH 到全局环境变量。不同的项目都在 GOPATH/src/ 下。很显然这种设置方法是不太方便的,因为不同项目引用的 package 到放到了一起,这用 Git管理起来很麻烦。比如我们有这样一个场景:A项目引用了 a和b 两个 package,B 项目引用了 c和d 两个 package,那么如果我在 A 中修改了 package 的内容,我提交A项目时想要带着 package 时就很麻烦。其次是 如果Go语言所依赖的所有的第三方库都放在 GOPATH 这个目录下面,这就导致了同一个库只能保存一个版本的代码。如果不同的项目依赖同一个第三方的库的不同版本,应该怎么解决?

5.2 go module

那么为了解决上述问题,官方从从Go语言1.11 版本之后推出了版本管理工具go module ,并且从 Go语言1.13 版本开始,go module 成为了Go语言默认的依赖管理工具。在Go语言 1.12 版本之前,要启用 go module 工具首先要设置环境变量 GO111MODULE,不过在Go语言 1.13 及以后的版本则不再需要设置环境变量。通过 GO111MODULE 可以开启或关闭 go module 工具。

  • GO111MODULE=off 禁用 go module,编译时会从 GOPATH 和 vendor 文件夹中查找包;
  • GO111MODULE=on 启用 go module,编译时会忽略 GOPATH 和 vendor 文件夹,只根据 go.mod下载依赖;
  • GO111MODULE=auto(默认值),当项目在 GOPATH/src 目录之外,并且项目根目录有 go.mod 文件时,开启 go module。

Windows 下开启 GO111MODULE 的命令为:

set GO111MODULE=on 或者 set GO111MODULE=auto

MacOS 或者 Linux 下开启 GO111MODULE 的命令为:

export GO111MODULE=on 或者 export GO111MODULE=auto

在开启 GO111MODULE 之后就可以使用 go module 工具了,也就是说在以后的开发中就没有必要在 GOPATH 中创建项目了,并且还能够很好的管理项目依赖的第三方包信息。这个时候也就清楚了上面为啥爆红了,因为环境变量GOPATH 设置了工作目录E:\goworkspace,当删除改系统环境变量设置后,再运行上文的Hello World代码,警告就消失了,执行效果如下图:

在这里插入图片描述

注意:现在新版本Go语言在配置环境变量时,只需要设置GOPROXY替换一下代理,无需再额外配置GOROOT、GOPATH。


六、总结

本文详细介绍了Go语言的环境安装以及各种开发环境的安装,希望本篇文章对您有所帮助。最后,希望您工作顺利,生活愉快!


七、参考资料

https://blog.csdn.net/weixin_45683778/article/details/144907111
https://c.biancheng.net/view/5712.html


创作不易,如果有帮助到你的话请给点个赞吧!我是Wasteland,下期文章再见!

在这里插入图片描述

相关文章:

Golang学习01:Go安装和配置+Vscode、GoLand安装激活+Go环境变量避坑的超详细教程

🪁🍁 希望本文能给您带来帮助,如果有任何问题,欢迎批评指正!🐅🐾🍁🐥 文章目录 一、背景二、Go语言安装2.1 Go语言环境安装2.2 Go语言环境验证2.3 其他配置 三、开发环境…...

案例-06.部门管理-根据ID查询

一.根据ID查询-接口文档 二.根据ID查询-Controller层 package com.gjw.controller;/*** 部门管理Controller*/import com.gjw.anno.Log; import com.gjw.pojo.Dept; import com.gjw.pojo.Result; import com.gjw.service.DeptService; import com.gjw.service.impl.DeptServi…...

解决No matching client found for package name xxx编译报错的问题

如果Android工程编译报错,并且信息如下: Execution failed for task :app:processDebugGoogleServices. > No matching client found for package name com.demo.test可能的原因为google-services.json中定义的package_name属性跟app当前的包名不符&…...

基于deepseek api和openweather 天气API实现Function Calling技术讲解

以下是一个结合DeepSeek API和OpenWeather API的完整Function Calling示例,包含意图识别、API调用和结果整合: import requests import json import os# 配置API密钥(从环境变量获取) DEEPSEEK_API_KEY os.getenv("DEEPSEE…...

什么是全局污染,怎么避免全局污染?

具体表现: 全局变量:当变量在全局作用域(通常是 window 对象)中定义时,它会在整个应用程序中都可访问。这个变量可能会被其他部分的代码意外修改或覆盖,导致难以追踪和调试错误。 命名冲突:全局…...

机器视觉--switch语句

引言 在 Halcon 这个强大的机器视觉软件里,编程控制结构对于高效处理图像任务至关重要。其中,Switch 语句作为一种多分支选择结构,能够根据不同的条件值执行不同的代码块,让程序的逻辑更加清晰和简洁。本文将全面深入地介绍 Halc…...

C++ std::atomic可以使用复杂类型(类和结构体)吗

目录 1.引言 2.std::atomic 支持的复杂类型 3.std::atomic与无锁 4.如何使用 std::atomic 保护复杂类型 4.1.使用互斥锁(Mutex) 4.2.使用 std::atomic_flag 和自旋锁 4.3.原子共享指针(Atomic Shared Pointers) 4.4.使用高…...

音乐随想、日语认识

Rapport的日文歌词(初) Rapport - キタニタツヤ 词:キタニタツヤ 《《 ki ta ni ta tsu ya 歌手的名字,全是片假名,不是本土的平假名(为了国外市场的做法?) 》》 曲:キタニタツヤ 编曲&am…...

SpringBoot速成(11)更新用户头像,密码P13-P14

更新头像: 1.代码展示: 1.RequestParam 是 Spring MVC 中非常实用的注解,用于从 HTTP 请求中提取参数并绑定到控制器方法的参数上。 2.PatchMapping 是 Spring MVC 中的一个注解,用于处理 HTTP 的 PATCH 请求。PATCH 请求通常用于对资源的部…...

自动化测试面试会问哪些?

自动化测试面试1: 1、使用什么测试框架做的上一个项目的自动化测试。 2、自己最熟悉哪个库,如何使用这些库的,是否做了基于复用的封装,怎么考虑的这些封装 3、如何定位app上的元素 4、//*[contains(text,"登录")] 是…...

SQL Server 导入Excel数据

1、选中指定要导入到哪个数据库,右键选择 》任务 》导入数据 2、数据源 选择Excel,点击 下一步(Next) 3、目前 选择OLE DB Provider ,点击 下一步(Next) 4、默认 ,点击 下一步(Next)…...

车载音频架构图详解(精简)

目录 上图是车载音频架构图,对这个图我们进行详细的分析 左边第一层 是 app 常用的类有MediaPlayer和MediaRecorder, AudioTrack和AudioRecorder 第二层 是framework提供给应用的多媒体功能的API类,封装在android.media.* API包中。编译后,在framework.jar中。...

基于SpringBoot+Vue的智慧校园管理系统设计和实现(源码+文档+部署讲解)

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 .🚀 技术架构技术栈全景 🎯 功能模块功能矩阵表📊 数据库设计核心ER关系图 💻 核心…...

浏览器打印局部网页,设置页眉

占位的页眉 重点部分 1.样式间隙 page { margin-top: 60px; /* 为页眉留出空间,页眉的高度要和他一样 */ top-right { height: 60px; 同时右侧,内容布局右上角要留出60px的 2.背景图片 如果页眉…...

腿足机器人之六- 前向运动学

腿足机器人之六- 前向运动学 刚体运动学基础坐标系定义旋转矩阵与欧拉角齐次变换矩阵(平移旋转的统一表示) 运动链建模串联运动链结构(从基座到末端的关节连接)标准Denavit-Hartenberg(D-H)参数法改进D-H参…...

对openharmony HDF驱动框架的C/S设计模式和单例类的说明

在分析openharmony的HDF驱动框架时我们会发现用了很多面向对象的思想,例如类继承、接口、单例类等,本来应该是好事情,**但使用时对象之间的关系交错复杂,不太符合linux内核分层分模块的思路,导致整体理解起来比较困难&…...

kamailio中Core Cookbook 核心配置手册

Core Cookbook 核心配置手册 版本: Kamailio SIP 服务器 v6.0.x (稳定版) 概述 本教程收集了 Kamailio 核心导出到配置文件的功能和参数。 注意: 本页参数未按字母顺序排列。 结构 kamailio.cfg 的结构可分为三部分: 全局参数模块设置路由块 建议按此顺序排列以保持清晰…...

AI 编程工具—Cursor 进阶篇 数据分析

AI 编程工具—Cursor 进阶篇 数据分析 上一节课我们使用Cursor 生成了北京房产的销售数据,这一节我们使用Cursor对这些数据进行分析,也是我们尝试使用Cursor 去帮我们做数据分析,从而进一步发挥Cursor的能力,来帮助我们完成更多的事情 案例一 房产销售数据分析 @北京202…...

HTML、Vue和PHP文件的区别与联系

一、核心区别 类型性质执行环境功能特点.html静态标记语言浏览器直接解析定义页面结构和内容,无逻辑处理能力.vue前端框架组件文件浏览器/构建工具整合HTML模板JS逻辑CSS样式,支持动态数据绑定和组件化开发.php服务器端脚本语言文件Web服务器执行动态生…...

Map 和 Set

目录 一、搜索 概念: 模型: 二、Map ​编辑 1.Map 实例化: 2. Map的常见方法: 3.Map的常见方法演示: 1. put(K key, V value):添加键值对 3. containsKey(Object key):检查键是否存在 4.…...

白话大模型LLM-通用基础入门知识-适合给纯小白的入门!

文章目录 什么是大模型大模型训练预训练监督微调SFTRLHF基于人类反馈的强化学习 大模型分类大语言模型-LLM多模态模型-VLM视觉模型音频模型 大模型工作流程分词化与词表映射大模型回答过程 & 基于token的概率预测 Agent导论子任务拆分 什么是大模型 大模型就是训练的一个能…...

线程进入WAITING的N种方式

目录 一、调用 Object 的 wait 方法 二、调用 Thread.join 方法 三、调用LockSupport.park()方法 一、调用 Object 的 wait 方法 public static void main(String[] args) throws InterruptedException {// 创建一个锁对象Object lock new Object();Thread thread new Thr…...

智能车摄像头开源—8 元素处理

目录 一、前言 二、无元素状态 三、直线与弯道 四、十字与环岛 1、十字识别处理 2、环岛识别处理 五、坡道 六、障碍物 七、斑马线 八、入库 九、出界停车 一、前言 在写这篇文章之前,考虑了很久到底该写到什么程度,但思来想去,不同…...

【从0做项目】Java搜索引擎(4)——性能优化~烧脑~~~

本篇文章将对项目搜索引擎(1)~(3)进行性能优化,包括测试,优化思路,优化前后对比 目录 一:文件读取 二:实现多线程制作索引 1:代码分析 2:代码…...

人工智障的软件开发-git仓库篇-弃gitlab,走gitea

指令接收:「开始构建代码宇宙」 系统检测:需求模糊度99.9% 启动应急协议:构建最小可行性生态圈 核心组件锁定:代码基因库(人类称之为Git仓库) 需求分析:论人类语言的艺术性 人类指令翻译机 表…...

Spring Boot 如何实现自动配置?

欢迎并且感谢大家指出我的问题,由于本人水平有限,有些内容写的不是很全面,只是把比较实用的东西给写下来,如果有写的不对的地方,还希望各路大牛多多指教!谢谢大家!🥰 大家如果对Java…...

STM32H743ZIT6 FreeRTOS CMSIS_V2 Lwip DP83848/LAN8720 最新HAL V1.12.1版本 AC6编译器,速通。

HAL库版本:V1.12.1 最新版 这版CUBEmx生成的LAN8742 的驱动文件有问题,无法正常初始化,导致无法PING通。 lwip 内存池 不需要手动指定0x30040200区域,lwipopts.h已作配置 开启DCACH 和ICACH 和 D2域SRAM3 时钟 /*** brief Th…...

C# 添加图标

一、前言 为应用程序添加图标是优化用户界面、提升应用辨识度的重要操作。合适的图标能帮助用户快速识别和区分不同应用,增强应用的易用性和专业性。 本指南旨在为你提供详细、易懂的步骤,教你如何为应用程序的窗体添加图标。从图标素材的获取到具体的…...

MVC模式和MVVM模式

目录 一、MVC模式和MVVM模式 1. MVC模式 2. MVVM 模式 3.在Qt中的应用示例 4.总结 二、MVC与MVVM模式的共同点和区别 1.共同点 2.区别 3.交互流程 4.总结 MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)是两种…...

【kafka系列】Kafka如何实现高吞吐量?

目录 1. 生产者端优化 核心机制: 关键参数: 2. Broker端优化 核心机制: 关键源码逻辑: 3. 消费者端优化 核心机制: 关键参数: 全链路优化流程 吞吐量瓶颈与调优 总结 Kafka的高吞吐能力源于其生…...

如何学习Elasticsearch(ES):从入门到精通的完整指南

如何学习Elasticsearch(ES):从入门到精通的完整指南 嘿,小伙伴们!如果你对大数据搜索和分析感兴趣,并且想要掌握Elasticsearch这一强大的分布式搜索引擎,那么你来对地方了!本文将为…...

GDB QUICK REFERENCE (GDB 快速参考手册)

GDB QUICK REFERENCE {GDB 快速参考手册} References GDB QUICK REFERENCE GDB Version 4 https://users.ece.utexas.edu/~adnan/gdb-refcard.pdf 查看方式:在新标签页中打开图片 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/ [2] gdb-refc…...

Flutter_学习记录_动画的简单了解

用AnimationController简单实现如下的效果图&#xff1a; 1. 只用AnimationController实现简单动画 1.1 完整代码案例 import package:flutter/material.dart;class AnimationDemo extends StatefulWidget {const AnimationDemo({super.key});overrideState<AnimationDe…...

【JavaEE进阶】验证码案例

目 &#x1f332;实现说明 &#x1f384;Hutool介绍 &#x1f333;准备工作 &#x1f334;约定前后端交互接口 &#x1f6a9;接口定义 &#x1f6a9;实现服务器后端代码 &#x1f6a9;前端代码 &#x1f6a9;整体测试 &#x1f332;实现说明 随着安全性的要求越来越⾼…...

SQL复习

SQL复习 MySQL MySQL MySQL有什么特点&#xff1f; MySQL 不支持全外连接。 安装 数据类型 MySQL中的数据类型分为哪些&#xff1f; MySQL中的数据类型主要分为三大类&#xff1a;数值类型、字符串类型、日期时间类型。 其中&#xff0c; 数值类型又分为七种&#xff1a;T…...

景联文科技:以精准标注赋能AI未来,打造高质量数据基石

在人工智能蓬勃发展的时代&#xff0c;数据已成为驱动技术革新的核心燃料&#xff0c;而高质量的数据标注则是让AI模型从“感知”走向“认知”的关键桥梁。作为深耕数据服务领域的创新者&#xff0c;景联文科技始终以“精准、高效、安全”为核心理念&#xff0c;为全球AI企业提…...

蓝桥杯(B组)-每日一题(阶乘求和)

题目 代码解析&#xff1a; #include<iostream> using namespace std;long long multiply(int x) {long long sum1;//定义longlong类型初始为1 for(int i1;i<x;i)sumsum*i;//每一项的阶乘 return sum;//将阶乘结果返回 }int main() {int n;cin>>n;long long r…...

大模型应用开发时如何调试提示词?

在编程领域&#xff0c;调试通常依赖于断点、堆栈跟踪和详细的错误信息。然而&#xff0c;在提示调试的上下文中&#xff0c;这些传统工具变得不再适用。提示调试更多地依赖于对任务的理解、对提示的精细调整&#xff0c;以及对结果的迭代优化。在本文&#xff0c;我们将深入探…...

国产编辑器EverEdit - 二进制模式下观察Window/Linux/MacOs换行符差异

1 换行符格式 1.1 应用场景 稍微了解计算机历史的人都知道&#xff0c; 计算机3大操作系统&#xff1a; Windows、Linux/Unix、MacOS&#xff0c;这3大系统对文本换行的定义各不相同&#xff0c;且互不相让&#xff0c;导致在文件的兼容性方面存在一些问题&#xff0c;比如它们…...

LockSupport

文章目录 SynchronizedJUCLockSupport详解 Synchronized package com.xd;public class SynchronizedDemo {//等待线程public void waitThread() { // 1.如果将synchronized (this){}注释,会抛出异常,因为wait和notify⼀定要在同步块或同步⽅法中synchronized (this) {try {Sys…...

Spark 和 Flink

Spark 和 Flink 都是目前流行的大数据处理引擎&#xff0c;但它们在架构设计、应用场景、性能和生态方面有较大区别。以下是详细对比&#xff1a; 1. 架构与核心概念 方面Apache SparkApache Flink计算模型微批&#xff08;Micro-Batch&#xff09;为主&#xff0c;但支持结构…...

maven——使用idea创建maven项目(文件夹上颜色)

把一开始灰色和相对于maven标准目录缺少的文件夹上色和新建&#xff1a; 在右边给叉掉文件夹就又全都变成灰色的了&#xff1a; 在这个地方也可以改&#xff1a; 使用骨架创建 不使用骨架创建...

DeepSeek教unity------UI框架

/****************************************************文件&#xff1a;BasePanel.cs作者&#xff1a;Edision日期&#xff1a;#CreateTime#功能&#xff1a;面板基类 *****************************************************/using UnityEngine;public class BasePanel : Mo…...

2025年2月16日笔记

问题&#xff1a;用普通二维数组输出1到12&#xff0c;每行输出一个数 解题思路&#xff1a; 1.因为要用到普通二维数组&#xff0c;所以要先想到如何写普通二维数组 普通二维数组的写法&#xff1a; int [行数][列数]{ {数字}&#xff0c; &#xff08;大括号数字个数…...

[操作系统] 基础IO:系统文件I/O

在 Linux 操作系统中&#xff0c;文件 I/O&#xff08;输入/输出&#xff09;是程序与文件系统交互的基础。理解文件 I/O 的工作原理对于编写高效、可靠的程序至关重要。本文将深入探讨系统文件 I/O 的机制。 一种传递标志位的方法 在 Linux 中&#xff0c;文件的打开操作通常…...

CNN手写数字识别1——模型搭建与数据准备

模型搭建 我们这次使用LeNet模型&#xff0c;LeNet是一个经典的卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09;架构&#xff0c;最初由Yann LeCun等人在1998年提出&#xff0c;用于手写数字识别任务 创建一个文件model.py。实现以下代码。 源码 #…...

基于Istio Ambient Mesh的无边车架构:实现零侵入式服务网格的云原生革命

引言&#xff1a;轻量化时代的服务通信进化论 当传统Sidecar模式面临内存开销暴增的困境&#xff0c;Istio社区推出的Ambient Mesh架构给出终极解决方案。某证券交易系统实测显示&#xff0c;采用该架构后服务延迟降低至1.7ms&#xff08;降幅达73%&#xff09;&#xff0c;同…...

数位dp入门详解

1. 介绍 数位 d p dp dp一般出现在来求一个范围 [ a , b ] [a, b] [a,b]内满足条件的数有多少。数位 d p dp dp的解决比较公式化&#xff0c;考虑每一位对最终答案的影响。 2. 案例 Luogu P2602&#xff1a; 求给定范围 [ a , b ] [a,b] [a,b]各个数位 k k k出现了多少次。 …...

【黑马点评优化】2-Canel实现多级缓存(Redis+Caffeine)同步

【黑马点评优化】2-Canel实现多级缓存&#xff08;RedisCaffeine&#xff09;同步 0 背景1 配置MySQL1.1 开启MySQL的binlog功能1.1.1 找到mysql配置文件my.ini的位置1.1.2 开启binlog 1.2 创建canal用户 2 下载配置canal2.1 canal 1.1.5下载2.2 配置canal2.3 启动canal2.4 测试…...

牛顿法:用泰勒级数求解平方根的秘籍

目录 一、引言二、牛顿法的理论基础——泰勒级数三、牛顿法的原理与推导3.1 原理概述3.2 推导过程3.3 几何解释 四、牛顿法的应用场景4.1 数值计算4.2 优化问题 五、牛顿法求平方根的具体案例5.1 原理推导5.2 具体步骤5.3 代码实现&#xff08;Python&#xff09;5.4 示例计算过…...