`
爱迪生的小屋
  • 浏览: 35619 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

GO语言学习心得

阅读更多

简单学习了一下GO语言,Google出品,值得期待

    GO语言一句话,就是一个小型的C语言,灵活度增加,复杂度降低:

1. 扩展了C的语法

     平行赋值,函数多返回值,可变参数的简化和for语法扩展有亮点

     强类型语言,变量类型自动声明聊胜于无

     函数免声明可以省点事情,基本上除C外,其它语言都早就支持

     去除#define,虽然可以大幅提高编译速度以及增强可读性,但是灵活性也有不小的损失

     函数参数默认值好像被去除,可惜了

     将一些库的方法(go,defer)提升到语法层向,对初学者是一大福音

     并发库应该比较优化,这是高性能的保证

2. 过程式编程

     type struct只是结构体,加上了this指针函数成了方法,struct继承不能称为继承,有点像javascript的对象内容拷贝,也不支持多态,构造函数,调用父类方法等功能。

     弱化的指针,不支持除(*和&)外的任何操作,这是为了和C兼容,但需要用户来选择值传递还是指针传递显得有点多余。

     我还是更喜欢Java的模式,即基本类型值传递,对象和数值统一指针传递。这种方式下除了要将修改过基本类型参数的值传递出去有点不方便外,都非常和谐。而且去了指针这个大麻烦。

3. 面向接口

     interface和对象无关,真正面向接口,也支持多态,这点不错,多少可以弥补不支持继承的弱势,但是方法调用的开销可能会比较大

4. 垃圾回收

     GC机制简单(单一算法,stop-the-world且无法配置)压缩了GO做为实时系统的使用空间,期待这方面的改进或者提供一个可以关闭系统GC,交给用户手动控制的机制

5. 函数库

     系统提供的库功能很强大,但是数量有限,成熟的语言中多数使用的库都是第三方提供的

 

总结:

     做为C的替代品,GO在执行效率上肯定有优势。但是主流的语言(Python, Java, PHP,Ruby)也都提供JIT功能(运行过程中翻译成机器语言),特别是Java的JIT,同为强类型语言,JIT后已经可以接近C的性能。

     语法上,GO介于Java与Ruby/Python之间,指针机制略显鸡肋,用接口弥补对象的不足,对于Java/Ruby/Python的用户者会不习惯,但对C/PHP的用户者是一大提高

     GC的不足,库的匮乏是两大硬伤。在复杂系统开发会受到很大的局限。

     GO如果写小工具(功能独立,实时性要求不高)非常合适,如日志处理,后台计算

 

0
1
分享到:
评论

相关推荐

    go学习心得体会(持续更新)

    go学习文档,主要记录了go的基本用法以及cgo的使用。持续更新。

    leetcode题库-go-learning:Go语言学习。1>goinaction子项目是《Go语言实战》学习笔记;2>go-practic

    希望维护管理此仓库,记录学习Go语言部分心得,与其他同行参考。 本博客中涉及的完整代码: GitHub地址: https://github.com/thinkingfioa/go-learning 本人博客地址: https://blog.csdn.net/thinking_fioa 文中如若...

    golang学习资料

    收集的go语言开发资料,包括现出版的书和一些学习心得。里面有Go语言编程、Go web 编程、Go 学习笔记 第二版、go(Google)语言精要、gobook、Golang常见的坑和编程模式、学习 Go 语言、[Addison-Wesley Professional]...

    java版飞机大战源码-golang:关于golang

    Go语言资料收集 说明 发布站点 |1001github|_ |1001csdn|_ |1001sina|_ 最后更新 2012-03-31 Go1正式发布,更新相关资料,详见 |1002log|_ 缘起说明 想学习称手的新语言,发现Go后非常感兴趣,也把接触到的一些资料...

    books:programming所有编程语言书籍

    数据分析The Elements of Statistical LearningMathematical Methods for Physics and Engineering模式识别与机器学习(Pattern Recognition And Machine Learning)算法珠玑GolangGolang标准库文档GoWeb编程Go学习...

    ctf总结.md

    burpsuite,浏览器代理设置教程抓了包后右键放到repeater里,点go可以进行发包测试,用完Burpsuite过后,要正常上网的话,要把代理关了。 浏览器插件改包的话,(有视频) 找flag:在请求头,响应头尝试实验室:key究竟...

    CodeCamp:技术汇总

    面试和算法心得廖雪峰 JavaScript Python Git 教程JS 函数式编程指南禅与 Objective-C 编程艺术笨办法学C 中文版简明 Python 教程Python 核心编程 第二版Go 语言圣经 中文版itbookjava1234工具类网站导航cdn 常见CDN...

    micro-Services-Tutorial:微服务教程

    微服务教程微服务最初由Martin Fowler与James Lewis于2014年共同...这是学习的天地,也是技术的聚集地,记录了我一路前行的心得,仅以此文分享给所有在微服务架构之路上学习和使用的人。golang编程觉得此文章不错,支持

    asp.net知识库

    XSL学习心得 - 调用属性值 XSLT与XML转换的详细介绍 功能应用 读写搜索 基础教程 RSS Web2.0时代,RSS你会用了吗?(技术实现总结) 知识集锦:三分钟全面了解 Blog 和 RSS C#+ASP.NET开发基于Web的RSS阅读器 ASP.NET ...

    二十三种设计模式【PDF版】

    为能和大家能共同探讨"设计模式",我将自己在学习中的心得写下来,只是想帮助更多人更容易理解 GoF 的《设计模式》。由 于原著都是以C++为例, 以Java为例的设计模式基本又都以图形应用为例,而我们更关心Java在中间件等...

Global site tag (gtag.js) - Google Analytics