前言

目前大部分时间都用来学习go语言了,从基础到框架的学习,还是很轻松的,就是需要特别注意容易踩坑。

感想

在go语言中,需要大量的写 if err != nil {} 用来排错,这是为后续程序运行报错提供明确的指示,我理解这样的做法,在初学者阶段,能提前把错误给判定了,这样后面就能少踩一些坑。

目前的go语言生态并不成熟,一些框架设计的都是非常简单,没有像python或js那样,有海量的类库。但是go的语法非常简单,也不需要太复杂的库。目前已经学习的框架有:gingormgrpc

go语言是没有面向对象的,但是有结构体,可以实现类似的面向对象,并且go语言有一个类型叫 鸭子类型 ,这是一个非常好的设计,原理就是:一只鸟,看着像鸭子,叫起来像鸭子,走起来像鸭子,水里游起来也像鸭子,那么就可以判定这只鸟就是一只鸭子。只要我的行为跟你定义的一样,那么我就是你。

从js转到go后,发生了很大的变化,就是不能随意赋值了,哈哈哈。go是一种强类型静态语言,需要明确指定变量的类型,如果想填入任意值,可以使用 any 或者 interface{} ,但这样又会引发出另一个问题,在使用这个变量的时候需要通过断言或者反射来获取变量的类型,否则无法使用。还有一点就是一个int整数类型,有int,int8,......,int64等等,甚至还有uint,他有很多不同的类型,在js中只需要确认他是number类型。假如有个变量定义的是int64,然后它的值为128,如果你要转换成int8,那么就会报错,因为int8的范围是-128到127,所以在高数值转向低数值的时候要特别小心。

GO语言胜任的业务

接下来就是聊一下go语言能胜任的业务:

  • 网络编程:高性能服务器,API开发
  • 分布式系统:微服务架构,消息队列
  • 大数据处理:并行计算,流式处理
  • 云计算:云原生,k8s集群
  • 游戏开发:服务器端网络编程
  • ......

目前最流行的就是微服务,云原生,k8s,docker等等。

个人分享

开发go可以用vscode和goland,其中goland是最好用的,因为功能更全面,但它是收费的。vscode是免费的,但是他有go语言开发工具包,也非常好用。主选goland,其次是vscode。

目前最新的go是用go mod来管理项目,在使用第三方类库的时候简单了很多。

推荐一些第三方库:

还有一些我没列出来,感兴趣的可以去 pkg.go.dev 搜索。

在国内拉取第三方库的时候可能会出现网络异常,这时候需要给go mod加个代理,推荐两个:

根据自己喜好去选择。

还有很多关于go语言的话题没有讲完,今天就讲这么多,后续再补充。如果感兴趣可以前往我的笔记站点查看:Go语言笔记