go 前言
2016-04-26 16:30
435 查看
go语言优势
1、并行与分布式支持
1并发执行“执行体”,Go语言在语言级别支持协程(goroutine)。
例
func run();
func main(){
go run();
}
2.执行体间通信
1.执行体之间互斥和同步
1.互斥:对共享资源进行访问
2.同步:对时序依赖进行处理
3.多数数据语言只支持到线程间互斥或同步
2、执行体之间消息通信
1.共享内存模型
GO有所保留
2.消息传递模型
典型模型(Erlang)主题思想
1.轻量级进程
2.消息乃进程间通信的唯一方式:即需要消息队列(message queue)或者进程邮箱(process mail box)进行通信
Go主要通信使用内置消息队列——通道(channel)
2、软件工程支持
1.代码风格规范
1.public变量必须以大写字母开头,private变量必须以小写字母开头
2.if ex{
} ————规范
if ex
{
}
————不规范
2.错误处理规范
1.defer f.Close();
defer关键字含义:不管程序是否出现异常,均在函数退出时自动执行相关代码;
2.Go语言函数允许返回多个值
1.传统模式:返回error类型,错误逻辑比较统一
3、编程哲学支持
1.GO反对函数和操作符重载
虽然重载解决了一小部分面向对象编程(OOP)的问题,但也带来极大负担。
2.支持类,类成员,类组合。反对继承,虚函数和虚函数重载
1.Go继承可用组合实现
type Foo struct{
}
func (foo *Foo) Bar(){
}
2.Go放弃了构造函数(constructor)和析构函数(destructor)
3.提供接口(interface)
1.go语言提供的接口与其他语言最大的区别就是它的非入侵性
1.传统方式:实现接口
class Foo implements IFoo{}
2.go方式
type Foo struct{}
var foo IFoo = new(Foo)
影响
1.Go语言的标准库再也不需要绘制类库的继承数图,只需要知道这个类实现了哪些方法就行
2.再也不用纠结接口拆的多细才合理:脱离了实际的用户场景,接口粗细毫无意义
3.不用为了实现接口而专门导入一个包,两个接口如果有相同方法,那他们就是等同的,可以互相赋值
小结:
1.更好支持协程控制
2.defer及多返回值
3.反对继承
4.接口的非入侵性
1、并行与分布式支持
1并发执行“执行体”,Go语言在语言级别支持协程(goroutine)。
例
func run();
func main(){
go run();
}
2.执行体间通信
1.执行体之间互斥和同步
1.互斥:对共享资源进行访问
2.同步:对时序依赖进行处理
3.多数数据语言只支持到线程间互斥或同步
2、执行体之间消息通信
1.共享内存模型
GO有所保留
2.消息传递模型
典型模型(Erlang)主题思想
1.轻量级进程
2.消息乃进程间通信的唯一方式:即需要消息队列(message queue)或者进程邮箱(process mail box)进行通信
Go主要通信使用内置消息队列——通道(channel)
2、软件工程支持
1.代码风格规范
1.public变量必须以大写字母开头,private变量必须以小写字母开头
2.if ex{
} ————规范
if ex
{
}
————不规范
2.错误处理规范
1.defer f.Close();
defer关键字含义:不管程序是否出现异常,均在函数退出时自动执行相关代码;
2.Go语言函数允许返回多个值
1.传统模式:返回error类型,错误逻辑比较统一
3、编程哲学支持
1.GO反对函数和操作符重载
虽然重载解决了一小部分面向对象编程(OOP)的问题,但也带来极大负担。
2.支持类,类成员,类组合。反对继承,虚函数和虚函数重载
1.Go继承可用组合实现
type Foo struct{
}
func (foo *Foo) Bar(){
}
2.Go放弃了构造函数(constructor)和析构函数(destructor)
3.提供接口(interface)
1.go语言提供的接口与其他语言最大的区别就是它的非入侵性
1.传统方式:实现接口
class Foo implements IFoo{}
2.go方式
type Foo struct{}
var foo IFoo = new(Foo)
影响
1.Go语言的标准库再也不需要绘制类库的继承数图,只需要知道这个类实现了哪些方法就行
2.再也不用纠结接口拆的多细才合理:脱离了实际的用户场景,接口粗细毫无意义
3.不用为了实现接口而专门导入一个包,两个接口如果有相同方法,那他们就是等同的,可以互相赋值
小结:
1.更好支持协程控制
2.defer及多返回值
3.反对继承
4.接口的非入侵性
相关文章推荐
- golang打印所有的runtime调用栈
- Yandex.Algorithm 2011 Round 2 D. Powerful array(莫队算法)
- 介绍 GDB 调试 Go
- Django--自定义用户认证
- go语言的GDB调试入门初级
- 用Golang写一个搜索引擎(0x07)
- IntelliJ IDEA 2016.1 使用go-lang-idea-plugin
- go的一些记录
- Golang的TLS通信,证书文件使用.
- UVA_11292_Dragon of Loowater
- mac下配置gdb调试golang
- go 类型系统(二)
- google-v8编译
- django admin site override save_model
- django modeladmin override ModelForm
- Google Heap Profiler
- 谷歌地球API相关网页翻译
- UVA_11054_Wine trading in Gergovia
- django models auto_now和auto_now_add的区别
- 提交新的logo到svn