你为何不使用Go语言呢?

Go是一个来源于C语言的编程语言,在保留了C语言的简约风格的同时也进行了很多改进。


今年的早些时候我们对比过了几种native编程语言,包括D语言、Go、Rust和Vala。这里我们将分析来自Google的Go语言,看看他到底哪里跟别的语言不一样。


Go语言比其他的很多语言都吸引我,虽然我不是Go语言的专家,但是我很乐意在这里介绍一下它的特性,下面的这些特性指引我转向了Go语言。快速简单的编译:


go语言编译的很快,事实上,他快的甚至可以作为脚本语言了。几个使他编译很快的原因有:


  • 他不使用头文件

  • 当A依赖B,B又依赖C时,那么首先会编译C,然后是B和A;但是如果A依赖B,但是A并不直接依赖于C,而是存在依赖传递,这时会把所有B需要从C拿到的信息放在B的对象代码里。这样,当编译A的时候,就不需要再管C了。

  • 在编译程序时,只需将类型信息沿着依赖关系树向上遍历即可,如果到达树的顶端,则只需编译紧邻的依赖,而不用管其它层级的依赖了。


通过多返回值的错误处理


现代的编程语言基本上有两种错误处理办法,例如在C语言里是使用返回值,而在Java等面向对象语言里使用异常处理返回值,因为返回值的状态码总是可能跟 需要返回的结果有冲突。Go语言允许多返回值,从某种程度上解决了这个问题。你可以为你的函数的执行结果状态定义返回值,任何调用的时候都可以来检查,很方便。


简单的组合


可以使用interface为对象指定一些类型的成员,还可以像Java一样给他们指定操作(行为)。例如在标准库的io包中定义了一个Writer,就 有一个带有字节数组作为参数(输入)一个integer值和错误码作为返回值(输出)的方法。而实现了io.Writer接口中的Write方法的类型才 是实际被执行的。这个设计能够非常优雅的分离代码,还简化了单元测试过程,例如,如果你想测试一个数据库对象的一个方法,在传统的语言中你必须创建一个数 据库对象,然后做很多协议初始化工作。在Go语言中,你可在接口下创建任何对象。


简单的并发


在Go中并发变得非常的简单,在任何函数前方上go两个字母,这个函数就将以他自己的go-routine(一个非常轻量级的线程)来运行,Go- routines之间通过channels来通信。我们通常会有一些需要线程同步和互斥的需求,在Go中非常简单,Go只是启动并发任务,各个任务之间通 过channels来通信,从而协调同步和互斥。


优秀的错误提示


我从没见过别的语言有Go语言这么高的错误诊断质量。例如如果你的程序思索了,Go的运行时可以通知你,而且,他甚至可以告诉你是哪个线程出了问题。当然编译错误也是很详细很有用的。


其他特性


Go语言还有其他非常吸引人的特性:高阶函数、垃圾回收、哈希映射、可扩展的数组等等。


当然了,没有一件东西是非常完美的,Go语言的开发工具还非常缺乏,社区很小,但是这个语言的背后支持者是Google,这些问题都会一步一步的 解决。当其他语言,尤其是D语言、Rust、Vala旨在简化C++而且增加新的特性的时候,他们都觉得自己像是带着新特性的C++。而Go语言更多的是 在反思一个Native语言应该是怎么样的。即使你没有特别考虑要使用Go语言,我想,即便哪怕是尝试一下,你将会发现你已经很欣赏他的很多特性了。


 End 

阅读排行榜/精华推荐
1
入门学习

如果有人质疑大数据?不妨把这两个视频转给他 

视频:大数据到底是什么 都说干大数据挣钱 1分钟告诉你都在干什么

人人都需要知道 关于大数据最常见的10个问题

2
进阶修炼

从底层到应用,那些数据人的必备技能

如何高效地学好 R?

一个程序员怎样才算精通Python?

3
数据源爬取/收集

排名前50的开源Web爬虫用于数据挖掘

33款可用来抓数据的开源爬虫软件工具

在中国我们如何收集数据?全球数据收集大教程

4
干货教程

PPT:数据可视化,到底该用什么软件来展示数据?

干货|电信运营商数据价值跨行业运营的现状与思考

大数据分析的集中化之路 建设银行大数据应用实践PPT

【实战PPT】看工商银行如何利用大数据洞察客户心声?              

六步,让你用Excel做出强大漂亮的数据地图

 数据商业的崛起 解密中国大数据第一股——国双

双11剁手幕后的阿里“黑科技” OceanBase/金融云架构/ODPS/dataV

金融行业大数据用户画像实践


讲述大数据在金融、电信、工业、商业、电子商务、网络游戏、移动互联网等多个领域的应用,以中立、客观、专业、可信赖的态度,多层次、多维度地影响着最广泛的大数据人群

36大数据

长按识别二维码,关注36大数据


搜索「36大数据」或输入36dsj.com查看更多内容。

投稿/商务/合作:dashuju36@qq.com


点击下方 “阅读原文”查看更多

↓↓↓

使用Go语言编写GUI应用程序时,有很多可用的GUI框架可以选择,每个都有其独特的优势和应用场景。下面是几个流行的GUI工具及库: ### 1. **GTK+ 和 GTK/GTK3** GTK+ 是一套跨平台的图形用户界面(GUI)工具包,支持多种操作系统包括Linux、Windows和macOS。GTK+ 提供了丰富的组件集,如按钮、标签、文本框等,并且支持创建复杂的应用程序布局。对于希望在多平台上构建一致性的GUI应用的开发者来说,GTK+ 是一个很好的选择。 #### 使用方式: - 在 Linux 系统上,通常会安装 GTK+ 开发环境作为依赖。 - 在 macOS 上,你可以通过 Homebrew 安装 gtk+。 - Windows 用户则可以从官方网站下载预编译的库和工具链。 ### 2. **Fenix GUI Framework** Fenix 是一个基于 GTK+ 的Go语言GUI框架。它提供了一套简洁的API,使得开发者可以快速构建现代化的UI。相比GTK+原生的API,Fenix简化了一些复杂度,使得入门更为容易。 #### 使用方式: - Fenix 需要在项目中作为一个外部依赖引入。 - 使用类似于Python的面向对象的方式构建窗口、控件等。 ### 3. **GfxGo** GfxGo 是另一个基于GTK+的Go语言GUI库,旨在提供一种易于使用的界面构建体验。它强调的是效率和性能,适合那些追求高交互性和响应速度的开发者。 #### 使用方式: - 类似于Fenix,GfxGo 也需要添加到项目依赖中。 - 构建界面和逻辑时,GfxGo 提供了一系列便捷的API。 ### 4. **Electron Go** 如果想要开发跨平台的桌面应用并且利用已有的Web前端技能,Electron Go 可能是一个不错的选择。Electron 是由Node.js团队维护的一个开源项目,允许开发者使用HTML、CSS和JavaScript来构建桌面应用。 #### 使用方式: - 需要额外学习Electron框架和Webpack等构建工具。 - 对于不熟悉前端技术的开发者来说,可能需要花费更多的时间和精力来适应。 ### 相关问题: 1. **GTK+ 和 Fenix 的主要区别是什么?** - GTK+ 更基础,提供更多自定义选项和低级API,适用于需要高度定制化界面的应用。 - Fenix 则封装了许多GTK+的基本功能,提供更高的抽象级别,使其更易上手,适合快速原型开发。 2. **在选择GUI库时应该考虑哪些因素?** - 应用需求(性能、安全性、用户界面复杂性) - 学习曲线(库的文档质量、社区活跃程度) - 社区支持和生态系统 - 与其他库和框架的兼容性 3. **如何集成Electron Go与现有的Web应用?** - 通过将Web应用打包成渲染进程,利用Node.js API与本地Go应用交互。 - 使用Electron框架的特性,如加载本地文件、访问系统API等。 - 需要注意跨域问题,确保安全设置允许Web应用与本地Go应用之间的通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值