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. IScroll那些事——内容不足时下拉刷新

    之前项目中的列表是采用的IScroll,但是在使用IScroll有一个问题就是:当内容不足全屏的时候,是木有办法往下拉的,这样就达不到刷新的目的了.[这是本人工作中遇到的,具体例子具体分析,这里只作一 ...

  2. # .NET切面编程——PostSharp

    目录 概念 实现方式 .Net平台的切面实现 PostSharp示例 概念 Aspect-Oriented Programming(AOP):想想OOP是不是有些熟悉,AOP翻译过来的意思就是面向切面 ...

  3. cocos 射线检测 3D物体 (Sprite3D点击)

    看了很多朋友问怎么用一个3D物体做一个按钮,而且网上好像还真比较难找到答案, 今天翻了一下cocos源码发现Ray 已经封装了intersects函数,那么剩下的工作其实很简单了, 从屏幕的一个poi ...

  4. 2、微信小程序之弹幕的实现(无后台)

    对弹幕功能主要利用环信来实现的,读者也许对环信这个东西很陌生,请先自行了解这环信再来看这文章. 环信开发文档:http://docs.easemob.com/im/400webimintegratio ...

  5. ABAP,学习不一样的EXCEL导出----XLSX Workbench

    这个工具是在查找ABAP导出EXCEL资料的时候发现,是国外的一位大牛自己开发的开源项目,体验了一番,确实很好用. 工具特点: No ABAP Programming Skills are requi ...

  6. 安装Scala-2.11.7——集群学习日记

    前言 在安装Spark之前,我们需要安装Scala语言的支持.在此我选择的是scala-2.11.7版本. scala-2.11.7下载 为了方便,我现在我的SparkMaster主机上先安装,把目录 ...

  7. (转)Maven项目标准目录结构

    场景:工作中的项目都是使用Maven的目录结构,虽然能够如期的完成开发工作,但是对于一个Maven工程的配置却并不熟悉,这里主要介绍下Maven工程的而目录结构. 1 标准目录结构 src -main ...

  8. 利用pyinstaller将python脚本打包发布

    之前写了一个小工具,将excel配置表转换为json.xml.lua等配置文件.最近在学习egret,正好需要转换配置文件,刚好就用上了.然而当我想把工具拷到工作目录时,就发愁了.之前我为了方便扩展, ...

  9. python中list总结

    转自python中list总结 一.list可以看做是一个数据结构,也是一个class, 用help(list)可以看见其方法,元素的增删改查都有各种现成的方法, 二.list操作包含以下函数:1.c ...

  10. VPS安装中文语言

    在CentOS VPS下修改语言编码: localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 export LC_ALL=zh_CN.utf8 上面第一步是用来产生编码文 ...