go语言是什么

第一章 go语言简介


Go语言为并发而生


前言

目前Go语言已经⼴泛应用于人工智能、云计算开发、容器虚拟化、⼤数据开发、数据分析及科学计算、运维开发、爬虫开发、游戏开发等领域,抓住趋势,欢迎大家一起学习


一、go是什么?

Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。

罗伯特·格瑞史莫(Robert Griesemer),罗布·派克(Rob Pike)及肯·汤普逊(Ken Thompson)于2007年9月开始设计Go,稍后Ian Lance Taylor、Russ Cox加入项目。Go是基于Inferno操作系统所开发的。

Go于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac OS X平台上进行了实现,后来追加了Windows系统下的实现。

在2016年,Go被软件评价公司TIOBE 选为“TIOBE 2016 年最佳语言”。 目前,Go每半年发布一个二级版本(即从a.x升级到a.y)

二、核心特性

1.并发

Go语言在并发编程方面比绝大多数语言简洁不少,这是它的最大亮点之一,也是其在未来进入高并发高性能场景的重要筹码。

golang的并发执行单元是一种成为goroutine的协程。协程之间的通信靠独有的channel机制实现。

goroutine 类似于线程,但并非线程。可以将 goroutine 理解为一种虚拟线程。Go 语言运行时会参与调度 goroutine,并将 goroutine 合理地分配到每个 CPU 中,最大限度地使用CPU性能。开启一个goroutine的消耗非常小(大约2KB的内存),你可以轻松创建数百万个goroutine

2.GC

GC,内存自动回收,不需要开发人员管理内存,使开发人员更专注业务实现,只需要new分配内存,不需要释放。

先分配一块大内存区域,再大内存被切分成各个大小等级的块,放入不同的空闲list中,对象分配空间时从空闲list中取出大小合适的内存块,内存回收时,会把不用的内存重新放回空闲list,空闲内存会按照一定的策略合并,以减少碎片。

3.编译方面

目前golang具有两种编译器

  1. 是建立在GCC基础上的Gccgo
  2. 是分别针对64位x64和32位x86计算机的一套编译器(6g和8g)

4.网络编程

  1. socketnet.Dial(基于tcp/udp,封装了传统的connectlistenaccept等接口)

  2. httphttp.Get/Post()

  3. rpcclient.Call(‘class_name.method_name’,args,&reply)

5.函数允许多个返回值

  1. 允许函数返回多个值,在某种场景下,可以有效的简化编程。

  2. go语言推荐的编程风格,是函数返回的最后一个参数作为error类型(只要逻辑中可能出现异常),这样,在语言级别支持多返回值,就很有必要了。

6.语言交互性

  1. 语言交互性是指本语言是否能和其他语言交互,比如可以调用其他语言编译的库。

  2. Go可以和C程序交互

6.异常处理

3个重要的关键字deferpanicrecover

  1. defer是函数结束后执行,呈先进后出。
  2. panic是程序出现无法修复的错误时使用,但会让defer执行完。
  3. recover会修复错误,不至于程序终止,当不确定函数不会出错时使用defer+recover

其他的一些有趣的特性

  1. 类型推导
  2. 接口interface
  3. 包的概念
  4. 交叉编译

在稍后的文章会详细介绍这些特性


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值