54

01.手撕Go语言-初识

 4 years ago
source link: https://www.tuicool.com/articles/eyArM3y
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

简介

Go是一门开放源码的编程语言,可容易的构建简单、可靠和高效的软件

历史

Go语言是由谷歌的开发工程师(罗伯特·格瑞史莫、罗布·派克、肯·汤普逊等)于2007年开始设计,利用20%的自由时间开发的实验项目,并于2009年以BSD-style授权(完全开源)首次公开发布,于2012年正式发布。

  • 罗布·派克:Unix小组成员,参与Plan9和Inferno操作系统,Limbo语言和UTF-8编码主要设计者,《Unix编程环境》,《编程实践》作者之一
  • 肯·汤普逊:B语言和C语言设计者,Unix和Plan9操作系统创立者之一,1983年图灵奖获得者
  • 罗布特·格瑞史莫:参与制作JAVA的HotSpot编译器及Chrome浏览器JAVASCRIPT引擎V8

创造

开发者使用编程语言的三大分类(执行速度、简易程度、开发难度):

  • 执行速度快、编译速度慢(编译型):C,C++
  • 执行速度较慢、编译速度快(解释型): JAVA,.NET
  • 执行速度慢、开发难度小(动态脚本):Python,PHP

Go语言在3个条件做了平衡:易于开发、快速编译、高效执行

特性

Go语言被称为21世纪的C语言,Go从其他开发语言的借鉴了许多优秀的设计思想,例如从C语言借鉴表达式、流程控制、基础数据类型、参数传递、指针等,从Oberon-2语言借鉴的包的导入和声明等,从Oberon语言借鉴的面向对象特性中方法的声明语法,从Limbo语言中借鉴的CSP(通信顺序进程,

communicating sequential

processes),从APL语言借鉴的iota语法,从Scheme语言借鉴的作用域和嵌套函数……

  • 静态类型并具有丰富的内置类型:
    bool、byte、rune、int、float、string、array、slice、map
  • 函数多返回值
  • 错误处理机制:使用defer、panic、recover定义标准的错误流程
  • 语言层并发:使用关键字go将函数以Goroutine方式运行,使用CSP模型作为Goroutine的通信方式
  • 面向对象:使用类型、组合、接口来实现面向对象思想
  • 反射
  • CGO:用于调用C语言实现的模块
  • 自动垃圾回收
  • 静态编译
  • 交叉编译
  • 易于部署
  • 基于BSD协议完全开放

应用

Go语言主要用于服务端开发,其定位是开发大型软件,常用于:

  • 服务器编程:日志处理、数据打包、虚拟机处理、文件系统
  • 分布式系统、数据库代理等
  • 网络编程:Web应用、API应用、下载应用
  • 内存数据库
  • 云平台
  • 机器学习
  • 区块链
  • ......

使用Go开发的项目列表: https://github.com/golang/go/wiki/Projects

  • Go
  • docker
  • kubernetes
  • lantern
  • etcd
  • Prometheus
  • Influxdb
  • Consul
  • nsq
  • beego
  • ...

使用Go开发的组织: http://go-lang.cat-v.org/organizations-using-go

  • 国外:Google、CloudFlare……
  • 国内:阿里、腾讯、百度、京东、爱奇艺、小米、今日头条、滴滴、美团、饿了么、360、七牛、B站、盛大、搜狗......

安装

下载地址:

Windows

  1. 下载安装包

    na6nemy.png!web

    01.01.png

  2. 安装

    7rYRvyf.png!web

    01.02.png

    mMvUZfy.png!web

    01.03.png

    63IZriy.png!web

    01.04.png

    IBre2iF.png!web

    01.05.png

    nmqmyab.png!web

    01.06.png

    Evaqme7.png!web

    01.07.png

Linux

  1. 下载

    YjIv2mE.png!web

    01.08.png

  2. 安装&配置

    QbIVBjq.png!web

    01.09.png

    au6jquY.png!web

    01.10.png

    Vrmaa2J.png!web

    01.11.png


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK