Go

相信大家,看到这篇文章的时候,已经自己在百度百科了解了go的发展史已经特性,再次我依然。。。。得哔哔叨一会。   ^.^

go语言的特性

go语言作为一门静态类型开发语言,与当前的开发语言想必具备众多 令人兴奋不已的新特性。(具体兴奋不兴奋就不知道了,本人也是第一次看,希望通过博文与大家一起学习,一起探讨)以下的罗列有什么不全的地方,希望大神,积极评论,留下您看出的破绽。^.^

go语言的主要特性:

  自动垃圾回收机制

所谓的垃圾回收机制,即所有的内存分配动作都会被在运行时记录,同时任何对该内存的使用也都会被记录,然后垃圾回收器会对 所有已经分配的内存进行跟踪监测,一旦发现有些内存已经不再被任何人使用,就阶段性地回收这些没人用的内存,当然应为需要尽量最小化垃圾回收的性能损耗,以及降低对正常程序执行过程的影响,显示中的垃圾回收算法要比这个复杂的多,比如对象增加年龄属性等,但基本原理 都是如此。

  更丰富的内置类型

  除了很多语言都支持的内置类型(比如整数,浮点数)等等。go语言也内置了一些比较新的语言中内置的高级类型,比如,数组,字符串,除此之外,go语言还内置了一个对于其他静态类型语言通常用库方式支持的字典类型(map),另外还有一个新增的数据类型,数组切片(slice),我们可以认为数组切片是一种可动态增长的数组,这几种数据结构基本上覆盖了绝大部分的应用场景。

  函数多返回值

  go语言革命性地在静态开发语言阵营中率先提供了多返回值功能,这个特性让开发者可以从原来用各种比较别扭的方式返回多个值得痛苦中解脱出来,既不用再区分参数列表中那几个用于输入,那几个用于输出,也不用再为返回多个值专门定义一个数据结构。函数的返回值,并不是每个返回值必须得赋值,没有被明确赋值的返回值保持默认的空值。

  错误处理

  (defer、panic、recover)这三个关键字用于标准的错误处理流程。

  go语言的错误处理机制可以大量减少代码量,让开发者也无需仅仅为了程序安全性而添加大量一层套一层的  try -  catch语句。

  匿名函数和闭包

  在go语言中,所有的函数也是值类型,可以作为参数传递。

  类型和接口

  go语言中的类型定义非常接近于C语言中的结构 (struct),甚至直接沿用了struct关键字,想必而言,go语言并没有直接沿袭C++和Java的传统去设计一个超级复杂的类型系统,不支持继承和重载,而只是支持了最基本的类型组合功能。

  并发编程

  go语言引入了goroutine概念,它使得并发编程变得非常简单,通过使用goroutine而不是裸用操作系统的并发机制,以及使用消息传递来共享而不是使用共享内存来通信,go语言让并发编程变得 更加轻盈和安全。

  反射

  反射(reflection)是在java语言出现后迅速流行起来的一种 概念,通过反射,你可以获取对象类型的详细信息,并可动态操作对象,反射是把双刃剑,功能强大但代码可读性并不理想。

  语言交互性

  由于go语言与C语言之间的天生联系,go语言的设计者们自然不会忽略如何重用现有C模块的这个问题,这个功能直接被 命名为Cgo,Cgo是语言的特性,同时也是一个工具名称。

在go代码中,可以按Cgo的特定语法混合编写C语言代码,然后Cgo工具可以将这些混合的C代码提取并生成对于C功能的调用包装代码,开发者基本上可以完全忽略这个go语言和C语言的边界是如何跨越的。

开发工具的选择

Goole并没有随着go 1的发布推出官方的go集成开发工具(ide),因此开发者需要自行考虑和选择合适的开发工具,目前比较流行的开发工具如下:

文本编辑工具   gedit(Linux)      Notepad++(windows)     Fraise(Mac OS X)

安装了goClipse插件的Eclipse,集成性做的很好。

Vim/Emacs,万能开发工具。

LiteIDE,一款专门为go语言开发的集成开发环境。

一起来学Go --- (go的简介以及环境的安装)的更多相关文章

  1. 尚学python课程---11、linux环境下安装python注意

    尚学python课程---11.linux环境下安装python注意 一.总结 一句话总结: 准备安装依赖包:zlib.openssl:yum install zlib* openssl*:pytho ...

  2. 尚学linux课程---10、linux环境下安装python

    尚学linux课程---10.linux环境下安装python 一.总结 一句话总结: 直接在官网下载python的源码包即可,然后在linux下安装 linux下安装软件优先想到的的确是yum,但是 ...

  3. Bootstrap:教程、简介、环境安装

    ylbtech-Bootstrap:教程.简介.环境安装 1. Bootstrap 教程返回顶部 1. Bootstrap 教程 Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.B ...

  4. Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装

    原文:Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装 Linux内核分析(一) 从本篇博文开始我将对linux内核进行学习和分析,整个过程必将十分艰辛,但我会坚持到底 ...

  5. Memcached简介及环境安装

    Memcached简介及环境安装 author:SimpleWu 简介 Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. Memcached是以LiveJournal旗下Danga ...

  6. lua脚本之lua语言简介以及lua的安装

    本博主不擅于进行文字创作,所以,相当一部分文字皆复制于其他博文.还希望能够得到谅解.  一.Lua语言简介 Lua是一个免费的开源软件,可以免费用于科研及商业.Lua具有一个专家团队在维护和升级,其设 ...

  7. scala语言简介及其环境安装

    scala语言简介及其环境安装 简介: 1.运行在JVM 上,兼容java语言 Scala的代码,都需要经过编译为字节码,然后交由Java虚拟机来运行.所以Scala和Java是可以无缝互操作的.Sc ...

  8. 简介及环境搭建跑通Hello

    简介及环境搭建跑通Hello Spring Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.是为了解决企业应用程序开 ...

  9. Redis入门很简单之一【简介与环境搭建】

    Redis入门很简单之一[简介与环境搭建] 博客分类: NoSQL/Redis/MongoDB redisnosqlmemcached缓存中间件  [Redis简介] <一>. NoSQL ...

随机推荐

  1. Luogu 1060 开心的金明 / NOIP 2006 (动态规划)

    Luogu 1060 开心的金明 / NOIP 2006 (动态规划) Description 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨 ...

  2. docker~save与load的使用

    回到目录 对于没有私有仓库来说,将本地镜像放到其它服务器上执行时,我们可以使用save和load方法,前者用来把镜像保存一个tar文件,后台从一个tar文件恢复成一个镜像,这个功能对于我们开发者来说还 ...

  3. PHP中定义常量define与const

    我们通常把不经常变的值定义成常量,常量一般用全部大写来表示,前面不加美元符号,也可减少团队开发的出错.那么define和const有什么区别呢? 1.const是一个语言结构:而define是一个函数 ...

  4. [bzoj1805][SCOI2005]骑士精神 [启发式搜索]

    Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2, ...

  5. (转)Maven使用

    MAVEN3--(一)关于MAVEN 博客分类: MAVEN3   1.简介 MAVEN是Apache开源组织中的一个跨平台的项目管理工具. 主要功能有项目构建.依赖管理以及项目信息管理. 2.项目构 ...

  6. [javascript] postmessage

    摘要 postmessage 作为 html5 跨域传值的解决方法,灰常好用啊..本次用的是页面a 用iframe 嵌入 页面b. 使用方法 postmessage 参数 otherWindow.po ...

  7. HTML5 开发APP( 环境配置)

    上一篇我写了关于新建项目,这一篇说一下配置环境我们新建一个移动app后,会发现一个mainifest.json文件,开发app所要配置的环境就在这个文件里 点击打开文件后会有配置界面,在配置界面的下方 ...

  8. Docker学习--->>Docker的认识,安装,及常用命令熟悉

    Docker是什么? 在平常的软件开发中,会面临着开发不同的程序或服务需要不同的环境.而在该环境上开发完成后,想要在其他的环境上部署,则需要自己去重新部署,而Docker的出现使得这样的迁移变得容易. ...

  9. Typescript 解构 、展开

    什么是解构.展开? 展开与解构作用相反,简单来说: 解构:解构赋值允许你使用数组或对象字面量的语法,将数组和对象的属性付给各种变量. 展开:允许你讲一个数组展开为另一个数组,或一个对象展开为另一个对象 ...

  10. 设计模式-前摄器模式(Proactor)

    本周要进行boost asio库的学习,在学习之前发现最好需要先了解一下前摄器模式,这样对asio库的理解很有帮助,故写下此文 我之前写的随笔XShell的模拟实现中的链接方式可以说是同步的(服务器阻 ...