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. django Modelform

    前言: 为什么要用form去验证呢? 我们提交的是form表单,在看前端源码时如果检查到POST URL及我们提交的字段,如果没有验证我们是否可以直接POST数据到URL,后台并没有进行校验,直接处理 ...

  2. 扩展SQLite使其能从apk文件中读取db

    游戏中会大量使用到配置文件,每个项目组根据自己不同的需求会选择不同的存储格式,比如使用Json或者SQLite来存储数据.此处我们只对使用SQLite的情况来做讨论.一般情况下会选择把它放在可读写目录 ...

  3. 分享网上搜到的Oracle中对判定条件where 1=1的正解

    今天在网上找到了Oracle中对判定条件where 1=1的正解,粘贴出来和大家分享下 1=1 是永恒成立的,意思无条件的,也就是说在SQL语句里有没有这个1=1都可以. 这个1=1常用于应用程序根据 ...

  4. tcp入门(唐唐的故事)

    1,互联网的实现,分成好几层.每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持.把互联网分成五层,容易让人理解. 2,对这五层的理解(唐唐讲故事): 实体层:目的就是把计算机连接起来,用电气 ...

  5. docker~写个容器启动的bash脚本

    回到目录 bash脚本在linux里就相当于win里的bat和cmd及ps脚本,可以把一般指令组织在一起,统一去执行,比如我有一些docker容器需要统一去启动,这时,你可以把它们写成一个bash脚本 ...

  6. 51nod_1264:线段相交(计算几何)

    题目链接 关于判断线段相交,具体算法见 点击打开链接 ,先进行快速排斥试验,若不能判断出两个线段不相交,再进行跨立试验. //吐槽1,long long 会溢出... //吐槽2,只进行跨立试验的虽然 ...

  7. 中国剩余定理(CRT)与欧拉函数[数论]

    中国剩余定理 ——!x^n+y^n=z^n 想必大家都听过同余方程这种玩意,但是可能对于中国剩余定理有诸多不解,作为一个MOer&OIer,在此具体说明. 对于同余方程: x≡c1(mod m ...

  8. 用Node.JS+MongoDB搭建个人博客(安装环境)(一)

    Node.JS是什么? Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效. Nod ...

  9. iOS开发实战-基于SpriteKit的FlappyBird小游戏

    写在前面 最近一直在忙自己的维P恩的事情 公司项目也是一团乱 于是...随手找了个游戏项目改了改就上线了,就当充数了. SpriteKit简介 SpriteKit是iOS 7之后苹果推出的2D游戏框架 ...

  10. javascript中this的用法

    this是Javascript语言的一个关键字. 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.比如, function test(){ this.x = 1; } 随着函数使用场合的 ...