2024字节青训营笔记(一)Golang概览 | 豆包MarsCode AI刷题

102 阅读3分钟

Golang概览

  1. 语法简单。现在回头想想,go靠着if、for、err、func、struct等,就能写一些程序了。比起java又臭又长的代码,以及cpp一些奇形怪状的语法,go几乎没有上手难度,非常简洁。而且一些实践证明的优良的语法设计,比如import多个库的合并、强行要求花括号的格式、不用分号结尾、for循环不用加括号、海象运算符、直接使用函数名首字母大写表示public、switch...case不用加break、函数可以返回多个值且调用这个可以用多个变量直接承接......比起java和cpp,太多新鲜好用的语法,无不证明这是一门简洁、现代、好用的编程语言。
  2. 工具链完善。以现代的眼光看编程语言,工具链已经是个很重要的部分了。从Maven、npm、cargo等工具的使用频率和受欢迎程度就可以看出这点。回想cpp的项目管理,简直就是个噩梦,对于新手来说非常迷茫,不但要专门安装相关工具,还要付出不小的学习成本。而go自带了一系列的工具,我们只需要安装完成后,go buildgo mod tidygo run main.gogo test等就可以进行一个项目的开发、单元测试、运行、打包,甚至是基准测试等,对新手非常友好。
  3. 丰富的标准库和垃圾回收。这点算是对开发者友好,虽然标准库还在慢慢扩充,而且一开始会让新手困惑的没有"Set"这个数据结构,但是相比c那种,还是挺方便的,不需要导太多包,直接用标准库就行,像一些json读写等都有直接可用的库。而对于垃圾回收,只能说有好有坏吧,好处是减少了开发人员的心智负担,而且程序的可靠性也有所保障,坏处是性能还是不如cpp和c这种需要手动管理内存的。不过golang还是比java的性能好一点点,这也是我学并且使用它的原因。
  4. 提供了方便的多线程开发模式。channelgo func可谓是golang的核心中的核心,相比较传统的多线程编写方式,即"创建一个线程对象,向对象传入被运行的函数和参数,然后thread.start()",golang的go令人印象深刻且语法简洁。同时,对于线程通信,go显然是经过了理论和实践的准备,最终选取了channel这种通信方式,视频里说的很好,是使用通信共享内存,而不是使用共享内存来通信,数据通过单向数据流从生产者到达消费者,项目中数据的传递非常清晰。而传统的通过共享内存来通信,需要开发者有足够的经验保证线程安全,同时每个线程都能对共享内存进行读写,数据流较为复杂。 image.png