如何用最快的时间学会 Go 语言?

如果我告诉你只需要学习半天 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 语言也就学会了。

具体的目录结构和代码编排会在后续的文章继续更新。

上一篇:gin中自定义路由日志的格式


下一篇:gin中的query和postform用法