Golang的编程心得

39 阅读2分钟

golang心得体会

作为写了7年的golang老人,今天写写关于这个语言的心得体会,主要是技术太多,更新太快,我怕很多美好的东西被遗忘。 golang是一个怎么样的语言呢,在我的眼里,它几乎完美,是我最喜欢的编程语言,我是从c语言开始学起,做了c/c++开发者5年,写golang这几年的日子是最舒服的,不用考虑编译问题,不用担心内存泄漏,不用操心刚创建的内存释放了没,性能也没话说。还有重要的几个点:

1.单元测试 ,我曾经用google test工具写过c/c++得单元测试,非常麻烦,啰嗦,要崩溃。golang自带得单元测试工具和命令,非常方便。

2.pprof /piː-piː-ɑːr-ɛf/(美式)这个工具非常好用,结合客户端的图形工具,可以直接生成函数的调用图,火焰图。我们在线上,通过配置选择开启或者关闭这个pprof工具。出现问题,就把pprof,实时观测系统情况,通过http接口,下载probuf的文件,做cpu,内存的分析。

3.写起来简单 一点也不啰嗦。对比java.

4.抛弃了,面向对象的糟粕 ,一层层的继承,用interface和组合,实现多态,非常简洁。

5.抛弃了try catch,需要开发者关系每个err,这样写出的程序,稳定性更好。

写golang要注意的地方

注意封装和抽象

golang容易跟c语言一样,一不留神,就把一个功能,在一些函数里面做完了,数据也没封装,像面条一样,功能入口也难找。所以在写功能之前,还是简单得创建结构体,做数据得封装,写构造函数,数据结构化。 我们大部分模块得代码是有分层设计的,不管是dao这种,还是ddd的四层架构,尽量把层与层之间的接口调用interface解耦,解耦的好处是接口变更,对本层代码影响最小。互相不影响。

注意线程安全

golang开辟新的线程太容易了,所以更加要注意多线程并发的安全,有些常见的坑点:

1.闭包的陷阱,最好把for 得到的元素通过函数参数传入go的函数,这样避免漏掉数据

2.全局变量记得加互斥锁或者原子操作

3.线程个数控制,线程个数控制,可以通过计数器,chan缓冲区大小,线程池的方式