如果我告诉你只需要学习半天 Golang 就能开发应用程序你信不信?
我一直认为学习一门新的编程语言难点不在语法(除个别语言,绝大多数语言都是 “C-like”),难点是如何有效快速的应用到实际开发和工程管理中,并且能极大发挥出这门语言最大的优势特性。
首先,先去官网下载 Golang 编译器,具体安装参考官网方案:https://golang.org/。
着重强调一点,学习任何语言千万别去捣鼓 IDE 这些编辑器和集成环境,要不然会让你陷入编辑器的使用方法,而不是语言本身的知识。最好的方式就是用 Sublime、Vim、VScode 这些轻量的编辑器,先也不用安装任何插件,就在命令行直接运行就好。
下载完成后先体验一下:
package main
import "fmt"
func main() {
fmt.Println("Hello, World")
}
运行结果:
$ go run main.go
Hello, World
语言结构就是这样的,然后就去看官方文档,不用太扣细节,把基础的看完就可以了,基础包括:语言特性、包引用、数据类型、控制结构、数组、切片、函数、接口。重点是把包引用研究透了,然后就可以进行应用程序开发了。
没错,就是这么快(当然了,这只是针对于有过其他编程语言基础的同学来说,没有经验的还是一步一步来吧)。编程语言是工具,这也是工科和理科最大的区别,不用全部学会了再开始。
现在就给自己定一个任务,比如说要重构之前用 Java 、PHP、Python … 写过的还在线上跑的业务,然后顺着这个方向用 Go 重构。
比如,我们公司现在有一个基础架构是单点登录的微服务,我就选择用 Go 重构这个单点登录。
首先,找一个支持 RESTful 的 web 框架。从众多框架中挑选出三个具有代表性的:Beego、Gin、go-zero。框架的具体对比的文章有很多,这里不做介绍,我选择了人气很高的 Gin。当然,你也可以选择其他的框架,不影响 Go 的学习。
安装 Gin:
go get -u github.com/gin-gonic/gin
新建目录:
mkdir hello
新建 model:
go mod init hello
新建文件:
touch main.go
main.go
package main
import "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")
}
启动服务:
$ go run main.go
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
- using env: export GIN_MODE=release
- using code: gin.SetMode(gin.ReleaseMode)
[GIN-debug] GET /ping --> main.main.func1 (3 handlers)
[GIN-debug] Environment variable PORT is undefined. Using port :8080 by default
[GIN-debug] Listening and serving HTTP on :8080
运行结果:
$ curl "127.0.0.1:8080/ping"
{"message":"pong"}
剩下的就是根据业务来写服务代码了,可以边写边查 Go 语言语法的用法,等你把这个服务和重构完成,Go 语言也就学会了。
具体的目录结构和代码编排会在后续的文章继续更新。