一起来学Go --- (go的简介以及环境的安装)
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的简介以及环境的安装)的更多相关文章
- 尚学python课程---11、linux环境下安装python注意
尚学python课程---11.linux环境下安装python注意 一.总结 一句话总结: 准备安装依赖包:zlib.openssl:yum install zlib* openssl*:pytho ...
- 尚学linux课程---10、linux环境下安装python
尚学linux课程---10.linux环境下安装python 一.总结 一句话总结: 直接在官网下载python的源码包即可,然后在linux下安装 linux下安装软件优先想到的的确是yum,但是 ...
- Bootstrap:教程、简介、环境安装
ylbtech-Bootstrap:教程.简介.环境安装 1. Bootstrap 教程返回顶部 1. Bootstrap 教程 Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.B ...
- Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装
原文:Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装 Linux内核分析(一) 从本篇博文开始我将对linux内核进行学习和分析,整个过程必将十分艰辛,但我会坚持到底 ...
- Memcached简介及环境安装
Memcached简介及环境安装 author:SimpleWu 简介 Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. Memcached是以LiveJournal旗下Danga ...
- lua脚本之lua语言简介以及lua的安装
本博主不擅于进行文字创作,所以,相当一部分文字皆复制于其他博文.还希望能够得到谅解. 一.Lua语言简介 Lua是一个免费的开源软件,可以免费用于科研及商业.Lua具有一个专家团队在维护和升级,其设 ...
- scala语言简介及其环境安装
scala语言简介及其环境安装 简介: 1.运行在JVM 上,兼容java语言 Scala的代码,都需要经过编译为字节码,然后交由Java虚拟机来运行.所以Scala和Java是可以无缝互操作的.Sc ...
- 简介及环境搭建跑通Hello
简介及环境搭建跑通Hello Spring Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.是为了解决企业应用程序开 ...
- Redis入门很简单之一【简介与环境搭建】
Redis入门很简单之一[简介与环境搭建] 博客分类: NoSQL/Redis/MongoDB redisnosqlmemcached缓存中间件 [Redis简介] <一>. NoSQL ...
随机推荐
- mac重开电脑后显示重装提示解决办法
情况描述: mac昨天电脑关闭后 第二天打开电脑就显示语言选择安装语言 解决办法: 1 出现语言安装提示界面 我们选择简体中文 2 出现苹果密码登陆 我们选择下面的按钮点击退出 这样就可 ...
- nodejs之querystring模块
这里主要记下querystring模块的使用方法. querystring从字面上的意思就是查询字符串,一般是对http请求所带的数据进行解析.querystring模块只提供4个方法,在我看来,这4 ...
- 实验楼 1. k-近邻算法实现手写数字识别系统--《机器学习实战 》
首先看看一些关键词:K-NN算法,训练集,测试集,特征(空间),标签 举实验楼中的样例,通俗的讲讲K-NN算法:电影有两个分类(标签)-动作片-爱情片.两个特征--打斗场面--亲吻画面. 将那些数字和 ...
- hash冲突随笔
一:hash表 也叫散列表,以key-value的形式存储数据,就是将需要存储的关键码值通过hash函数映射到表中的位置,可加快访问速度. 二:hash冲突 如果两个相同的关键码值通过hash函数映射 ...
- iOS耗电量测试
iOS耗电量测试 本文主要介绍的是使用Energy Diagnostics Instruments来进行iOS耗电量测试. 一.使用方法: 1)iOS 设置选项 ->开发者选项 ->log ...
- HTMl课堂随笔
html: 1.超文本标记语言(Hyper Text Markup Lan) 2.不是一种编程语言,而是一种标记语言(Markup Language) 3.标记语言是一套标记标签(Markup Tag ...
- mysql 5.7 root密码重置(centos 7)
mysql5.7版本之后,与mariadb不同,在安装之后,在启动之时,会进行自动随机密码的设定,所以在systemctl start mysqld之后,会出现mysql -uroot -p无法登陆的 ...
- java对excel表格的上传和下载处理
Excel表格文件的上传和下载,java中涉及到文件肯定会有io流的知识. 而excel文件就要涉及到poi技术,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为 ...
- NYOJ--113--字符串替换
/* Name: NYOJ--113--字符串替换 Author: shen_渊 Date: 18/04/17 15:41 Description: 字符串水题,秒过 */ #include<b ...
- AngularJS--购物车全选/取消全选功能实现
刚学习angularJS,于是练习写了一个类似于购物车的全选/取消全选的功能,主要实现的功能有: 1.勾选全选checkbox,列表数据全部被勾选,取消同理,用ng-model实现双向绑定: 2.选中 ...