Go入门篇:(一)golang的安装和编辑工具安装

简介: Go入门篇:(一)golang的安装和编辑工具安装

一、前言

最近我有幸接触到Go语言,深入了解后,发现go语言确实有很多让人惊叹的地方。作为一个有着多年Java编程经验的程序员,我深深地被它所吸引,并且决定记录下我的学习之路,以便与大家分享我的经验和感悟。与Java不同,Go语言的语法和运行效率都非常高,特别是对于并发编程的支持更是超乎我想象。如果你想要使用一种更快更高效的编程语言,并且想要在并发编程方面实现更好的性能,那么Go语言将会是你的不二之选。因此,我将我的Go语言学习之路记录下来,并与大家分享我的经验。我希望这些记录能够带给你启发和帮助,在学习Go语言的过程中更加轻松自如。

二、GO简介

Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go语言是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。

三、Go的安装和开发工具安装

3.1 Go的安装

1、下载SDK包

  • Go语言的官网为:golang.org,因为各种原因,可能无法访问。
  • SDK下载地址:Go语言中文网:https://studygolang.com/dl

根据自己的操作系统下载对应的sdk版本即可。

2、安装及配置环境变量-windows/amd64设置环境变量

1)安装注意事项:安装包建议别安装在c盘,自己指定一个目录,如:F:\tools\Go(这个路径是安装自定义的路径),安装路径最好不要有中文或者特殊符号等

2)配置环境变量:在windows11下默认安装完go后,自动配置好环境变量,一般会在用户变量的中新建一个GOPATH的环境变量,如下:GOPATH --> C:\Users\User\go 在用户变量的path中会自动添加%USERPROFILE%\go\bin

其实这个自动配置的环境变量也是可以用的,但是依赖都放在C:\Users\User\go下,随着依赖越来越多,会占用C盘的空间。

3)调整如下:删除用户变量中的GOPATH --> C:\Users\User\go,以及path中的%USERPROFILE%\go\bin

在系统变量中path中删除F:\tools\Go(这个路径是安装自定义的路径) 在系统变量中新增GOROOT和GOPATH

GOROOT ---> F:\tools\Go(这个路径是安装自定义的路径)

GOAPTH ---> F:\go-workspace (自定义的路径) ,如下图所示:在系统变量的path中新增%GOROOT%\bin 和%GOPATH%\bin,如下图所示:

4)测试环境变量:

go version

环境变量设置成功。

5)go 代理设置:国内常用的GO代理如下:

goproxy

https://goproxy.io/zh/

七牛云

https://goproxy.cn

阿里云

https://mirrors.aliyun.com/goproxy/

设置代理Go 版本是 1.13 及以上


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

其他版本

export GO111MODULE=on
export GOPROXY=https://goproxy.cn

取消代理

go env -u GOPROXY

查看GO的配置

go env
//以JSON格式输出
go env -json

6)go 参数说明:

1.  go build : 编译当前目录或指定的Go文件,并生成可执行文件。 
 2.  go run : 编译并运行当前目录或指定的Go文件。 
 3.  go test : 运行当前目录或指定的Go测试文件,执行单元测试。 
 4.  go get : 下载并安装指定的包或依赖。 
 5.  go install : 编译并安装当前目录或指定的Go包或命令。 
 6.  go fmt : 格式化当前目录或指定的Go源码文件。 
 7.  go vet : 静态分析当前目录或指定的Go源码文件,检查潜在的错误。 
 8.  go mod init : 在当前目录初始化Go模块,创建go.mod文件。 
 9.  go mod tidy : 根据当前代码中的依赖关系,自动更新go.mod文件并移除不再使用的依赖。 
 10.  go mod vendor : 将依赖复制到项目的vendor目录下,用于离线构建。 
 11.  go mod download : 下载当前项目的所有依赖。 
 12.  go mod graph : 打印当前项目的依赖关系图。 
 13.  go mod edit : 编辑go.mod文件,手动添加、更新或删除依赖。 
 14.  go doc : 查看Go标准库或指定包的文档。

这些命令涵盖了Go开发中常用的编译、运行、测试、依赖管理和文档查看等方面。在实际开发中,根据具体需求和场景,可以使用这些命令来提高开发效率和管理项目。

3.2 开发工具选择

开发工具对于Go开发都非常重要,它们提供了丰富的功能和工具,帮助开发者编写、调试和管理Go代码。无论是专业开发者还是初学者,选择适合自己的开发工具都能提高开发效率和代码质量。

1、GoLand

GoLand是由JetBrains开发的强大集成开发环境(IDE),专为Go开发而设计。它提供智能代码补全、重构工具、调试功能和版本控制集成等功能,帮助开发者提高开发效率和代码质量。官方网站下载:https://www.jetbrains.com/go/

2、Visual Studio Code(VS Code)

VS Code是一款轻量级的代码编辑器,通过各种扩展支持Go开发。它提供语法高亮、代码导航、调试支持和与Git集成等功能,具有高度可定制性,适用于各种编程语言的开发。官方网站下载VS Code:https://code.visualstudio.com/

3、GoLand Lite

GoLand Lite是GoLand IDE的免费开源替代品。它提供了一个简化的开发体验,具备Go编程的基本功能。您可以从GitHub存储库下载GoLand Lite:https://github.com/go-lang-plugin-org/go-lang-idea-plugin

个人比较推荐GoLand,可能因为我是之前用IntelliJ-IDEA的缘故吧,其实VS Code也是个不错的选择。

四、Go的第一行代码

永远不变的"Hello,World!",用最简单的方式向Go世界宣告:“我来了!”

五、总结

学习Go语言是一个长期的过程,需要耐心和毅力。Go语言具有简洁、高效和易于学习的特点,但要掌握它的核心概念和特性需要时间和实践。学习任何一门技术都得上手去实践,千万不要眼高手低,要多加练习才能培养出代码感。要通过实际项目和练习来应用所学的知识,不断提升自己的编程能力。

相关文章
|
3天前
|
安全 Go
Golang深入浅出之-Go语言模板(text/template):动态生成HTML
【4月更文挑战第24天】Go语言标准库中的`text/template`包用于动态生成HTML和文本,但不熟悉其用法可能导致错误。本文探讨了三个常见问题:1) 忽视模板执行错误,应确保正确处理错误;2) 忽视模板安全,应使用`html/template`包防止XSS攻击;3) 模板结构不合理,应合理组织模板以提高可维护性。理解并运用这些最佳实践,能提升Go语言模板编程的效率和安全性,助力构建稳健的Web应用。
15 0
|
4天前
|
程序员 Go
Golang深入浅出之-Select语句在Go并发编程中的应用
【4月更文挑战第23天】Go语言中的`select`语句是并发编程的关键,用于协调多个通道的读写。它会阻塞直到某个通道操作可行,执行对应的代码块。常见问题包括忘记初始化通道、死锁和忽视`default`分支。要解决这些问题,需确保通道初始化、避免死锁并添加`default`分支以处理无数据可用的情况。理解并妥善处理这些问题能帮助编写更高效、健壮的并发程序。结合使用`context.Context`和定时器等工具,可提升`select`的灵活性和可控性。
16 2
|
1天前
|
JSON JavaScript 前端开发
Golang深入浅出之-Go语言JSON处理:编码与解码实战
【4月更文挑战第26天】本文探讨了Go语言中处理JSON的常见问题及解决策略。通过`json.Marshal`和`json.Unmarshal`进行编码和解码,同时指出结构体标签、时间处理、omitempty使用及数组/切片区别等易错点。建议正确使用结构体标签,自定义处理`time.Time`,明智选择omitempty,并理解数组与切片差异。文中提供基础示例及时间类型处理的实战代码,帮助读者掌握JSON操作。
11 1
Golang深入浅出之-Go语言JSON处理:编码与解码实战
|
1天前
|
安全 Go 开发者
Golang深入浅出之-Go语言模板(text/template):动态生成HTML
【4月更文挑战第25天】Go语言的`text/template`和`html/template`库提供动态HTML生成。本文介绍了模板基础,如基本语法和数据绑定,以及常见问题和易错点,如忘记转义、未初始化变量、复杂逻辑处理和错误处理。建议使用`html/template`防止XSS攻击,初始化数据结构,分离业务逻辑,并严谨处理错误。示例展示了条件判断和循环结构。通过遵循最佳实践,开发者能更安全、高效地生成HTML。
7 0
|
2天前
|
数据管理 Go 开发者
Golang深入浅出之-Go语言上下文(context)包:处理取消与超时
【4月更文挑战第25天】Go语言中的`context`包在并发、网络请求和长任务中至关重要,提供取消、截止时间和元数据管理。本文探讨`context`基础,如`Background()`、`TODO()`、`WithCancel()`、`WithDeadline()`和`WithTimeout()`。常见问题包括不当传递、过度使用`Background()`和`TODO()`以及忽略错误处理。通过取消和超时示例,强调正确传递上下文、处理取消错误和设置超时以提高应用健壮性和响应性。正确使用`context`是构建稳定高效Go应用的关键。
10 1
|
2天前
|
Unix Linux Go
Golang深入浅出之-信号(Signals)处理与优雅退出Go程序
【4月更文挑战第25天】Go语言中的信号处理关乎程序对外部事件的响应,尤其是优雅地终止进程。本文介绍了信号基础,如SIGINT、SIGTERM等常见信号,以及处理流程:注册处理器、等待信号、执行清理和优雅退出。强调了三个易错点及避免方法,并提供实战代码示例展示如何监听和响应信号。信号处理应简洁高效,确保程序健壮性和用户体验。
10 0
|
4天前
|
Go 开发者
Golang深入浅出之-Go语言上下文(context)包:处理取消与超时
【4月更文挑战第23天】Go语言的`context`包提供`Context`接口用于处理任务取消、超时和截止日期。通过传递`Context`对象,开发者能轻松实现复杂控制流。本文解析`context`包特性,讨论常见问题和解决方案,并给出代码示例。关键点包括:1) 确保将`Context`传递给所有相关任务;2) 根据需求选择适当的`Context`创建函数;3) 定期检查`Done()`通道以响应取消请求。正确使用`context`包能提升Go程序的控制流管理效率。
13 1
|
4天前
|
Go
Golang深入浅出之-信号(Signals)处理与优雅退出Go程序
【4月更文挑战第23天】在Go语言中,使用`os/signal`包处理信号对实现程序优雅退出和响应中断至关重要。本文介绍了如何注册信号处理器、处理常见问题和错误,以及提供代码示例。常见问题包括未捕获关键信号、信号处理不当导致程序崩溃和忽略清理逻辑。解决方案包括注册信号处理器(如`SIGINT`、`SIGTERM`)、保持信号处理器简洁和执行清理逻辑。理解并正确应用这些原则能增强Go程序的健壮性和可管理性。
14 1
|
4天前
|
存储 安全 Go
Golang深入浅出之-原子操作包(sync/atomic)在Go中的应用
【4月更文挑战第23天】Go语言的`sync/atomic`包支持原子操作,防止多线程环境中的数据竞争。包括原子整数和指针操作,以及原子标量函数。常见问题包括误用非原子操作、误解原子操作语义和忽略内存排序约束。解决方法是使用原子函数、结合其他同步原语和遵循内存约束。注意始终使用原子操作处理共享变量,理解其语义限制,并熟悉内存排序约束,以实现并发安全和高效的应用程序。
18 1
|
5天前
|
安全 Go 开发者
Golang深入浅出之-Go语言并发编程面试:Goroutine简介与创建
【4月更文挑战第22天】Go语言的Goroutine是其并发模型的核心,是一种轻量级线程,能低成本创建和销毁,支持并发和并行执行。创建Goroutine使用`go`关键字,如`go sayHello("Alice")`。常见问题包括忘记使用`go`关键字、不正确处理通道同步和关闭、以及Goroutine泄漏。解决方法包括确保使用`go`启动函数、在发送完数据后关闭通道、设置Goroutine退出条件。理解并掌握这些能帮助开发者编写高效、安全的并发程序。
13 1