go 前言

byf422325912 · · 1349 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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.接口的非入侵性


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:byf422325912

查看原文:go 前言

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1349 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传