Golang介绍 – 1. 概述 – 2. Go Feature



Golang介绍 – 1. 概述 – 2. Go Feature

0 0


go-ppt


On Github keviswang / go-ppt

Golang介绍

2017.2.14 @NBCB

Agenda

  • Go概述
  • Go特性与JAVA差异
  • Go的生态

1. 概述

Timeline

  • 2007 年 9 月 21 日:雏形设计
  • 2009 年 11 月 10日:首次公开发布
  • 2010 年 5 月起:Google正式投入实际开发中

Design Note

Go is not meant to innovate programming theory.

It’s meant to innovate programming practice.

版本开发流程

  • 半年发布一个主要版本
  • 发布时间:8月1号和2月1号
  • 前三个月Active Development,后三个月Test&Polish
  • 下一个版本启动计划时间:7月15日和1月15日
  • 2-3个beta版本,1-2个rc版本和最终的release版本
  • 当前release版本维护通过一系列的minor版本体现

Go适合做什么

  • 服务器编程
  • 分布式系统
  • 网络编程
  • 内存数据库
  • 云平台

2. Go Feature

特性

  • 代码风格规范
  • 自动垃圾回收
  • 错误处理规范
  • 语法简单,上手容易
  • 天生异步
  • ...

开发体验

  • 不过多的隐藏技术细节,减少开发时的心智负担
  • 自带的标准包满足绝大多数后端开发需求,后发优势
  • 低成本的gorountine撑着,可以规避掉进程和线程的相关问题
  • 部署方便,省心

目前存在的问题

  • 暂时没有工程化的IDE支持(目前IntelliJ已经在开发)
  • 目前没有官方标准包管理工具(目前官方正在完善开发中)

    import包不支持版本,升级容易导致项目不可运行

  • 网络问题(GFW)

特殊的面向对象方式

没有class,没有 this

所有和 class 相关的,比如构造函数、虚拟函数都是没有的。

没有继承,只有组合

特殊的interface

type不需要声明他们具体要实现的某个interface

任何想要实现interface的type仅需提供与interface声明所匹配的方法

Gorountine & Channel

Don't communicate by sharing memory, share memory by communicating.

3. Go的生态

为微服务而生

成熟的Go项目
  • Docker
  • Kubernates(k8s)
  • Tidb(分布式NewSQL,强一致性的分布式事务)
  • Grpc
  • Grafana
  • Prometheus
  • ...
例子 -- 服务注册发现

Go的技术栈

  • Grpc
  • Prometheus
  • etcd

JAVA的技术栈

  • Netfix Eureka
  • Spring Boot

Spring Cloud还有熔断器Hystrix,边缘服务Zuul等一系统套件

谢谢
Golang介绍 2017.2.14 @NBCB