云计算时代,Go是首选的编程语言,很多云基础设施都是用Go写的,更不用说Docker和kubernetes这样的大杀器了。对于后端工程师来说,这是最值得学习的技能。这篇文章适合有一定基础的
云计算时代,Go是首选的编程语言,很多云基础设施都是用Go写的,更不用说Docker和kubernetes这样的大杀器了。对于后端工程师来说,这是最值得学习的技能。
这篇文章适合有一定基础的人,因为Go不适合编程初学者。对于编程初学者,建议从Python开始。
如果你有一定的编程基础,再学围棋会容易很多,尤其是有C语言基础,学围棋语言会快很多。
Go的语法很少,关键词也很简洁,但是对于长期编写Java这种面向对象语言的人来说,需要抛弃Java固有的面向对象思想。Go在面向对象编程中给出了不同的方案,没有类的概念,接口与Java中完全不同。对于熟悉Java的人来说,需要一段时间来适应。
本文不会涉及围棋的具体教程,但可以认为是一个路线图,是我快速入门围棋语言的一个比较好的途径。
在阅读以下内容之前,我会默认你已经掌握了一门开发语言,做过一些Web开发,熟悉Git的基本用法。
1.入门指南1.1基本介绍环境配置
在编写代码之前,需要先安装Go。Go支持Linux、macOS、Windows等平台。你可以在这里下载安装包。
MacOS和Windows都提供二进制安装包,而Linux需要安装源代码(在Ubuntu和centos上,也可以直接用命令安装,但一般不能安装最新版本的Go)。
在编写代码之前,你需要知道Go中的两个重要概念:GOROOT和GOPATH。GOROOT很好理解,就是Go的安装目录,在JAVA中可以理解为JAVA_HOME。
GOPATH通常是~/go目录。在这个目录下,通常有三个子目录:bin、pkg、src。bin目录包含可执行命令,pkg目录包含编译时生成的一些中间件文件,src是存放源代码的地方。
在Go模块出现之前(如下所述),需要将Go的依赖库和源代码放在GOPATH的src中,否则将找不到依赖。Go模块出现后,Go的依赖关系管理问题已经基本解决,不需要把源代码放在GOPATH中,基本上只用来存储依赖关系。
基本语法
围棋官网提供了入门教程《围棋之旅》,基本涵盖了围棋的所有语法。您可以直接在网页上访问它,也可以在本地下载该应用程序:
go get golang.org/x/tour复制代码
然后可以在命令行输入(需要配置GOPATH):
tour复制代码
这样就可以打开一个本地网页,加载速度会快很多。毕竟Go官网在海外,直接访问还是有点慢。
在类似的教程中也有一个示例。你可以选择这两个教程中的一个来学习。
做完上面的练习,就可以开始看围棋编程语言了,可以说是围棋最好的入门教材。虽然内容滞后,但总体来说还是值得一读的。
常用命令工具
Go (Go cli命令)非常重要,在Go的整个开发生命周期中都需要这些工具。
Go命令的基本用法如下:
go <command> [arguments]复制代码
在初级阶段,必须掌握以下命令:
go run:编译并运行 Go 程序go build:编译并打包 Go 程序go get:安装依赖go test:运行测试
开始使用Go开发程序后,您将会经常使用上述命令。要查看完整的命令,请输入:
go help复制代码
看完这些内容,你应该熟悉围棋的基本语法和常用工具。为了尽快上手Go的开发,接下来要学习一些常用的组件和框架。
1.2共同框架如果要开发一个应用,基本都会涉及到Web API的开发,MySQL和Redis都会用到。以下是如何在Go语言中快速入门这些框架。
Web框架
Go中常用的web框架有很多。我推荐杜松子酒,简单易学,性能好。
go get -u github.com/gin-gonic/gin复制代码
您可以快速创建基于http的API服务:
package mainimport "github.com/gin-gonic/gin"func main() {r := gin.Default()r.GET("/ping", func(c *gin.Context) {c.JSON(200, gin.H{"message": "pong",})})r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")}复制代码
MySQL框架
在Go语言中,数据库操作的所有接口都是在database/sql包中定义的,但没有提供具体的实现。由于数据库种类繁多,这种只屏蔽接口的方式屏蔽了数据库库的具体实现,方便我们更换和升级。
所以在连接数据库的时候,需要选择自己的数据库驱动,推荐那些已经完全实现了database/sql的驱动,有利于代码的后续维护和升级。
这里以MySQL数据库为例。常用的驱动是go-sql-driver/mysql,完全实现了数据库/sql接口。
易于安装:
$ go get -u github.com/go-sql-driver/mysql复制代码
然后就可以使用database/sql的接口来操作数据库了:
import ("database/sql"_ "github.com/go-sql-driver/mysql")db, err := sql.Open("mysql", "user:password@/dbname")if err != nil {panic(err)}复制代码
用原生MySQL接口写代码会产生大量冗余代码。如果想让代码更干净,ORM框架是必须的,所以需要学习gorm框架。
go get -u gorm.io/gorm复制代码
Redis框架
在Go中使用Redis时需要Go-Redis/redis组件。安装也非常简单:
go get github.com/go-redis/redis/v8复制代码
除了这个组件,还有不少人在用另一个redigo,大家可以自己去探索一下。
学完这些,就可以用Go进行日常开发了。
2.先进的学完以上基础,还需要学习一些高级的内容。
Go模块
在学习上述框架的时候,你可能还是会用GOPATH写代码。在Go1.11之后,Go推出了Go模块作为官方依赖管理工具。
这个工具一定要学会,依赖管理一直是Go语言的短板。几经非官方解决,官方出手,推出了这个工具。最好的学习材料是Go博客上的文章:
blog.golang.org/using-go-mo…如果英文版看起来不方便,这是我的翻译版本。
有了Go模块,依赖管理会方便很多,不需要在GOPATH下开发。
去博客
围棋博客绝对是学习围棋语言非常重要的信息。官方工具和特性将尽快在博客中发布。通过阅读这些材料,你可以了解这些特性和工具的背景,你不会理解偏差。
比如你可以在Go blog里了解为什么Go的声明语法是这样的。
语言特性的更新会在GoBlog上解释,所以关注Go blog是跟进Go blog特性的好机会。毕竟Go语言还在发展,很多特性会不断更新。
e有效go
除了围棋博客,围棋官方还有有效的围棋,必看文档。
这个文档可以算是Go的避坑指南,指出了Go语言容易出错的地方,可以帮助我们写出更干净漂亮的代码。文件不长,值得一读。
3.其他资源现在学习编程,Github是一个不可忽视的资源库。在下面的Github资源库中有大量的资源可以学习。
avelino/awesome-go:Go 的轮子库也在逐渐完善,Github 上的这个仓库收集了 Go 的诸多库,要造轮子之前,记得先到这里来找一找Alikhll/golang-developer-roadmap:这里还有一份 Go 开发者的路线图talkgo/read:这个仓库有很多的 Go 的教程,是中文版的,但里面的信息需要甄别一下,有些已经过时了go/wiki:go 项目的wiki,这里有很多技术文档,和大牛的博客,如果后续想深入研究 Go,可以从这里下手
4.开发工具GoLand也是JetBrains出品的工具。这个工具是要收费的。如果不想在这上面花钱,可以用VsCode。VsCode上有很多插件,很容易安装。
如果你想折腾自己,可以试试Vim。Vim配合vim-go插件,体验还不错,除了安装时可能会踩到一些坑。
对于开发电脑的选择,我推荐Mac,非常适合开发。现在互联网公司的开发机标准都是Mac。如果你觉得新Mac比较贵,可以从官网选择二手或者翻新机。如果不考虑便携性,可以选择Mac mini,性价比高。
在最近发布的Go1.16版本中,Go已经开始支持ARM的架构,所以即使是采用M1芯片的Mac也可以用于Go的开发(不过这个要谨慎,可能还有其他漏洞)。
5.摘要当你把以上内容都过了,你应该和我现在一样,算是入门围棋语言了。Go是一门很有潜力的语言,云计算时代的首选,值得学习。