罪恶克星 发表于 2024-7-23 20:29:50

【程序人生】毕业入职后,C++转Go语言工作半年感受,2024年最新2024年Golan

其中一个地方就是代码格式题目。在各大论坛、各大语言板块都充斥着括号位置、空格、缩进的
讨论,这些讨论在Go语言中都可以打住了。go fmt可以自动帮我们处理好这些题目,让我们的每
个源码文件的代码格式都是统一规范的。在现实应用中,这个特性可以大大提高团队的开发服从:
最简单的,写代码时,你再也不用在=两边,函数参数的后面等地方加上空格了,只要输入
go fmt myProject,一切题目都烟消云散。
6.只有一个的二进制可实行文件

利用过Go语言的同砚,应该都知道程序编译后仅仅天生一个可实行的二进制文件,非常
方便,但是我仍旧认为我们大大低估了这个语言特性的好处,特殊是在项目标后续开发、维护过程
中。现在社会,网络带宽和存储装备都不再昂贵,但是部署、配置、管理、升级各种软件服务的
代价照旧较为高昂的。如果各人自己管理过多个系统、集群,就会知道:升级或安装依靠库、JDK等
组件时,总会碰到特殊痛楚的时候,几天的加班加点搞定一个题目都有可能!而纯Go写的程序则不
一样,不管项目处于在哪个阶段,我们需要的也仅仅是一个binary文件,对于提高生产力来说,这个
无疑是非常巨大的。
7.完善的标准测试框架

Go的测试框架是非常棒的,和别的语言差别的是:我们仅仅利用Go语言自带的标准化测试
框架,就可以很好实现各种测试功能:单元,黑盒,白盒,压力测试等等。除了标准测试外,还有很
多第三方的优秀测试框架,但是要记取的是:最好只利用一套测试框架,如许能保持项目标完备性和
同等性。就笔者的履历来看,现在的标准测试框架充足用了,如果需要单步断点可以看这里。
8.性能分析

Go语言自带标准的性能分析工具,包括CPU、内存、阻塞操作(http请求,数据库请求,
time.Sleep等)在内的都可以丈量,influxdb就是利用这些工具实现了数据库的常量时间访问。
9.那么对于网上经常被喷的那些所谓的Go的‘题目’呢?

1)GC

Go语言从1.3开始,GC的改进就在持续进行中,1.5中,GC改成三色mark and
sweep后,性能得到了极大的提高,在1.6中,对于内存占用很高、对象很多的系统又进行了一
次大优化,可以说,现在的Go程序一般不存在GC题目,除非:分布式缓存、数据库、消息推送
如许海量对象的场景,这时候需要自己做好可复用对象管理、归并部分小对象、将一些小型的struct
结构定义为值范例而不是指针范例、还可以从业务层面和架构层面进行优化设计等等。
不过,虽然说不太需要担心GC题目,但是各人照旧最好学习一下Go的GC原理和
内存管理,理解底层原理对于很多时候快速的定位办理题目是大有裨益的。
PS: 2016年7月7日补充,昨天看到一个利用GO作为核心语言的国外大型视频直播
网站分享了关于GC的演变史,直接说结果吧:1.2版本的时候,GC STW时间是2秒左右,到了1.6版本
再联合一些GC参数调优,到达了30-50ms的级别,现在的1.7版本由于将一些STW工作放到了并发去
实行,因此GC时间到了1m级别,整整上千倍的提拔,根本上延时已经不是题目了。后续版本将进一步
改进STW题目,同时大大改善GC的吞吐率。
2)泛型

其实刚从别的语言过来时,我或多或少会在写Go代码时用到模版的头脑,但是后
面发现,如许会让代码更难维护,因此,写Go代码就要用Go的哲学和头脑。
写过C++代码的都知道:抽象是一把双刃剑,过度的抽象就可能存在埋伏的题目。
在我看来,Go所具有的OO头脑,是简洁的,是纯粹的,是组合的核心头脑。
编程现在就是化繁为简,充分利用组合的头脑(也是Unix程序设计提倡的头脑),可
以让我们的开发模型和项目代码大大简化、返璞归真 。Go的OO头脑充分体现了三位大神作者的
编程和设计功底,估计也只有Unix的作者才气写出这么完美的OO实现了!
3)GOPATH

对于新手来说,GOPATH很难理解清楚,我当时刚打仗时,也是含糊了一段时间。
现在则是混淆了两种方式,第一种,在默认的GOPATH下的src中存放项目;第二种,自定义一个
临时的GOPATH,然后存放项目。后者的独立性更好,但是全局利用go build ,go test等命令时就
会有题目,比如手动导出
GOPATH才行:
mkdir sunface
cd sunface-bench/
export GOPATH=$PWD
go get -v github.com/otoolep/bleve-bench
go install github.com/otoolep/bleve-bench/cmd/bench/.
$GOPATH/bin/bench -h
10.Go语言的总结

Go从出身来看更像学院派语言,但是现实上它是彻头彻尾的工程语言,特殊是它很得当
我们团队,很得当基础架构、中间件、云计算平台、PasS平台的开发,因为说它是云时代的未来第
一语言,丝毫不为过。
就我这边的项目而言,分布式日志平台、搜索系统、消息推送等项目中,避免了JVM或者
EVM的麻烦,着实是太美好了,所以,如果条件允许,我会完全选择纯Go来设计实现一个系统,也
许这种美好只有真正深入用过的人才气体会
页: [1]
查看完整版本: 【程序人生】毕业入职后,C++转Go语言工作半年感受,2024年最新2024年Golan