c#发展

注册

 

发新话题 回复该主题

Go又称Golang是一种怎样的 [复制链接]

1#

Go语言是Google开发的具有良好并发能力的编程语言。不太面向对象,但也支持面向对象的一些特性,个人感觉是够用的。

语法有些古怪,不过熟悉的之后又会觉得它比较简洁。异常处理也比较另类。包管理也比较另类。

编译的结果比较大,据说有个内置的垃圾处理器。交叉编译比较容易。自带比较完整的标准类库,开源项目很多。

go基础类型比如切片和map对并发支持的很不好。map也就罢了。切片从哪个角度看都是一个不可变的数据结构,居然有并发安全问题。这点有些违背常识了,足见go语言的特色。

go语言并发支持极好,有协程,channel。但是没有一个可以并发安全的数据结构我去。不过现在有并发安全的map了,但是线性表这样的结构还得自己实现。但是这里面又有一个小矛盾,那就是用锁性能差,用channel费内存。

年,受够了C++煎熬的Google首席软件工程师RobPike纠集RobertGriesemer和KenThompson两位牛人,决定创造一种新语言来取代C++,这就是Golang。

1特点

编译型语言,有比较充分的编译期检查。强类型语言,安全,速度快。严格区分值和指针。机器码目标编译器,不依赖虚拟机。类C逻辑,很多特性与C语言一脉相承,又有很多现代化改进。支持多返回值。有GC。协程模型,屏蔽了os线程概念,抽象了多线程软件开发。基于消息传递的通信方式。支持反射。defer善后处理方式。支持嵌入C语言,汇编语言。跨平台,arm,mips,x86,win,linux,macos,freebsd,设计本身对新平台扩展也很友好。原生支持跨平台交叉编译。用tags代替了C中的宏,更易读,易管理。统一代码风格,全世界的go代码读起来都像自己写的。编译速度非常快,在编译成机器码的语言中来说,有当年delphi的感觉。完善的工具链,编译,调试,测试,文档,性能分析,代码管理,模块管理,版本管理,全部自带,不依赖第三方。面向工程的语言,没有太多新潮的功能。默认UTF-8编码。

2.优势

有C基础的话,学习成本极低。自带功能非常丰富的标准库,许多高级功能基本不需要找三方库。语言和编译期已经稳定,版本升级很谨慎,持续保持兼容性。运行速度快占用资源少,运行速度不输主流的java/c#,占用资源却少很多。不需要考虑内存泄露的C语言?实施简单,通常只需要copy一个可执行文件。与C语言结合机制简单,相比JNI。机器码目标程序增加了破解和反编译难度。只有一套标准和知识,起码目前还没有分裂。交叉编译特别简单方便。

3.劣势

没有真正的面向对象,有类C风格基本的对象和接口组合功能。错误处理比较原始(官方认为这样很好),逻辑控制需要耗费更多精力。目前还没有泛型。(go社区还在讨论,可能在年6月前确定是否支持)包依赖要求比较严格的C风格,管理不当容易产生循环依赖错误。没有动态特性,一切都在编译期定了。需要精细粒度控制资源的领域无法取代C。编译时要求拥有全部源代码,没开放类似c的lib功能。三方包著名的较少,选择困难,很多问题还要自己来。官方没有提供GUI开发包,虽然有一些开源实现,但还不适合任复杂图形界面开发。移动前端开发还不成熟。自带模板引擎功能很弱,不是很好用,一般需要自行扩展。相比java,没那么适合堆集木。生态中的三方lib很多还不那么不完善(相比java)。4.主要用在哪些场景?

有C的支持,用在哪里都可以,不过用在最多的地方是是开发网络服务,应用服务,命令行工具。

Go语言是一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,它用批判吸收的眼光,融合C语言、Java等众家之长,将简洁、高效演绎得淋漓尽致。

超实用性的Python零基础入门到进阶视频源码淘宝¥2购买已下架
分享 转发
TOP
发新话题 回复该主题