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

Go语言之路————go环境的初始化

Go语言之路————go环境的初始化

  • 前言
  • 一、Go的安装
  • 二、环境配置
  • 三、初始化一个新项目
  • 四、常用的一些指令

前言

  • 我是一名多年Java开发人员,因为工作需要现在要学习go语言,Go语言之路是一个系列,记录着我从0开始接触Go,到后面能正常完成工作上的业务开发的过程,如果你也是个小白或者转Go语言的,希望我这篇文章对你有所帮助。
  • 有关go其他基础的内容的文章大家可以查看我的主页,接下来主要就是把这个系列更完,更完之后我会在每篇文章中挂上连接,方便大家跳转和复习。

一、Go的安装

官网:https://go.dev/dl/。如果网不好的记得上梯子
关于go的版本,go最大的一个版本改动,就是Go的1.18版本,我愿把它和java8相比,1.18版本引入了泛型(后面会讲),但是大多数生产企业会选择1.19版本,因为它相比上个版本更加的完善。

我在官网四处找了一下,没有发现有明确指出的LTS版本,在本文书写的时候,最新版本是1.23.4版本,因为我是写文章和测试用,我们就选择这个最新的版本,Windows环境下记得下载我下图红框选的,不要下载到32位版本的了。
.在这里插入图片描述

二、环境配置

  • GOROOT
    作用:GOROOT 指向 Go 语言的安装目录,这个目录包含了 Go 的标准库、编译器、解释器等核心组件。当你执行 go 相关命令时,系统会依据 GOROOT 找到这些基础的运行和编译资源。
  • GOPATH
    作用:GOPATH 是 Go 的工作空间目录,它是一个存放你自己编写的 Go 代码、下载的第三方依赖包的地方。
  • Go Mod
    作用:1.13版本后,官方推荐的新一代包管理工具

GOROOT是我们必须配置的,但是现在官方推荐使用go mod,所以GOPATH的作用就被弱化了,但是这里还是建议配置上,因为有些老项目还会用这个,如果go mod找不到,就会从GOPATH 的目录去寻找。

步骤:直接上图吧
在这里插入图片描述

在这里插入图片描述

第一个是goroot,第二个是protobuf的环境变量,不用这个的可以不管,第三个就是go path的目录。
控制台测试一下配置是否成功,出现go的版本则配置正确。
在这里插入图片描述

三、初始化一个新项目

  1. 我这里用的编辑器是GoLand 2022.3
    ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/30f8123a5a7f464d9c13a339c0fbedb0.png

  2. 对新项目进线一下配置,打开enable go mod,并且配置代理:GOPROXY=https://mirrors.aliyun.com/goproxy/,国内这环境懂得都懂。
    在这里插入图片描述
    控制台开启go mod,输入以下神秘代码:

    go env -w GO111MODULE=on
    
  3. 新建main文件

    package mainimport "fmt"func main() {fmt.Println("hello world")
    }
  4. 运行
    在这里插入图片描述

  5. 如果我们从github上拉取了一个新项目,没有go mod

四、常用的一些指令

1.如果我们从github上拉取了一个新项目,没有go.mod文件,terminal中切换到项目目录,执行一下代码

go mod init module-name

其中module-name替换为具体的项目名就好了
2.刷新和整理包的命令

go mod tidy

这个命令会自动扫描项目代码,分析代码里导入的所有包,把这些依赖包的相关信息,像是版本号、哈希值等,正确添加到 go.mod 与 go.sum 文件当中 ,go.sum 主要用于校验依赖包的完整性,防止包被篡改。
3.我们要引入一个外部包

go get url

其中的url基本都是github的地址,比如我们项目中要引入redis的包依赖

go get github.com/go-redis/redis/v8

如果我们要加入具体版本号,就在最后面用@符号,然后加入版本号就行

go get github.com/go-redis/redis/v8@v1.1.0

到这,我们的环境就搭建好了,下一篇,跟我一起走进go的基础语法吧。


http://www.mrgr.cn/news/83568.html

相关文章:

  • 邮箱发送验证码(nodemailer)
  • VUE3 自定义指令的介绍
  • OpenCV相机标定与3D重建(48)对三台相机进行极线校正(rectification)函数rectify3Collinear()的使用
  • 汽车电子相关的协议UDS、DOIP、CAN
  • Python 正则表达式完全指南
  • Vue3学习-day3
  • MySQL表的增删改查(基础)-下篇
  • uc/os-II 原理及应用(八) 系统裁减以及移植到51单片机上
  • Redis高频知识点
  • 项目实战--网页五子棋(用户模块)(1)
  • wow-agent 学习笔记
  • 记一次sealos部署k8s集群之delete了第一台master如何恢复
  • LeetCode热题100-合并两个有序链表【JavaScript讲解】
  • 学习华为熵减,激发组织活力
  • LangChain 学习笔记 1 简介
  • Open FPV VTX开源之默认MAVLink设置
  • C#中的Array数组,List集合和ArrayList集合--07
  • Springboot——钉钉(站内)实现登录第三方应用
  • Day04-后端Web基础——Maven基础
  • Vue2+OpenLayers接入天地图API实现搜索定位和点击获取经纬度及地址功能(提供Gitee源码)
  • Oracle 使用dbms_stats.gather_table_stats来进行表analyse,收集表统计信息
  • FastApi Swagger 序列化问题
  • 2024 Java若依(RuoYi)框架视频教程(课件+示例代码+视频)
  • Mysql常见知识点
  • C#范围表达式,模式匹配,逆变和协变--11
  • 每日一题(二):判断一个字符串是否是另一个字符串的排列