ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

01.Go-开篇综述

2022-09-14 16:02:29  阅读:220  来源: 互联网

标签:01 开篇 python goroutine 并发 线程 Go 语言


1.1 语言介绍

Go 语言由谷歌(Google)公司于 2009 年正式对外发布,设计 Go 语言的初衷都是为了满足 Google 公司的需求。主要目标是“兼具 Python 等动态语言的开发速度和 C/C++等编译型语言的性能与安全性”,旨在不损失应用程序性能的情况下降低代码的复杂性,具有“部署简单、并发性好、执行性能好”等优势。最主要还是为了并发而生,并发是基于goroutine的,goroutine类似于线程,但并非线程,可以将goroutine理解为一种轻量级线程。Go 语言运行时会参与调度goroutine,并将goroutine合理地分配到每个 CPU 中,最大限度地使用 CPU 性能。

1.2 作者介绍

y2snviYUp6grnjX2KiAMnQ

从左到右分别是 :

  • 罗伯特·格瑞史莫(Robert Griesemer): 曾为谷歌的 V8 JavaScript 引擎和 Chubby 开发代码

  • 罗勃·派克(Rob Pike): 罗布·派克是 Unix 的先驱,是贝尔实验室最早和 Ken Thompson 以及 Dennis M. Ritche 开发 Unix 的猛人,UTF-8 的设计人。还是 1980 年奥运会射箭的银牌得主。

  • 汤普逊(Ken Thompson): Ken Thompson 图灵奖得主,C 语言前身 B 语言的作者,Unix 的发明人之一, 操作系统 Plan 9 的主要作者。 共同开发了 UTF-8。

1.3 Go 语言特点

Go 语言,作为编程语言的后生,站在巨人的肩膀上,吸收了其他一些编程语言的特点。下面简单解释一下:

  1. 拥有编译器很方便

    自带编译器可以检测出你犯的所有低级错误,如:变量名拼错,不要小看这种问题,没有编译器情况下,很可能浪费掉很长时间去排查,并且非常不容易发现,而且Go语言也是跨平台编译的,你可以在 Mac 电脑上,编译出linux或者windows的目标程序。

  2. 开发速度

    Go 是一个非常简单的语言,上手容易,无论你是小白还是老鸟,都会比其他语言 C/C++ 和 Java 等语言要容易很多,这点在做项目中体现得尤其明显。很多人可能会说那 python 呢,php 呢?从语言上说 python 和 php 他们没有编译检查,同样也会像上面说的出一些小的低级错误,或者运行时错误,这都给 php 和 python 带来了隐患,所以 Go 语言虽然牺牲了一点点代码书写的时间,但是从项目运行安全角度来说,已经非常值得了。

  3. 天生高并发

    Go 语言就是为高并发而生的。当你需要使用并发场景,如果你有其他语言基础,第一反应是用到锁,但是 Go 语言提供了更加方便的方式协程+通道,在 Go 语言中代码不用修改就能直接多协程运行,只要在调用的时候加入 go 关键字,就可以了,非常方便。这与其他语言截然不同,你要考虑哪里开辟新的线程,哪里是代码执行逻辑。

  4. 部署简单

    Go 语言最终执行就是一个二进制文件,包括了它所依赖的程序包,这让开发者不用考虑部署环境的问题,例如,如果你是 java 程序,要考虑执行你的程序,对方机器是否安装了 java 的运行环境,其他语言同理,如果对方机器没有安装,无法运行你的程序,Go 语言可以在 Mac 和 Linux 上交叉编译你的代码,将其拷贝到远程服务器上,然后就可以任其运行了。

1.4 Go 语言能做什么

Go 的优点:实现快 + 资源占用低 + 任意环境随便跑,综合考虑在很多场景十分好用 。

  1. Go 适合造轮子,哪个库不好用就自己造。

  2. Go 适合写工具,比如 hugo 、hub,还有国人写的 linux 下的百度 pan client 都是 go 实现的。

  3. Go 适合实现 C/C++ 一部分业务,Java 的大部分业务。

  4. Go 适合做最外层的胶水,通过 RPC/REST/CGO 粘合不同语言的模块,而在这个胶水层还可以实现各种业务逻辑,又不用像 shell/python/node 有诸多顾虑和局限。

  5. Go 提供了协程、指针、 unsafe, cgo 加上 C/C++ 兼容的内存布局和跨平台的汇编,有了这些你能做很多事情了。

所以问题不是它适合做什么,是你有能力用它做什么。

1.5 哪些公司在使用 Go

这个问题之前 Go 的官方 wiki 里面有一个维护列表,大家可以点击下面地址看到:

https://github.com/golang/go/wiki/GoUsers

在 stackshare 里面可能更加直接的看到一些使用 Go 的国外企业列表:

  • Uber
  • Google
  • Pinterest
  • Shopify
  • Slack
  • ...

国内使用 Go 的企业也非常的多:

  • 腾讯
  • 阿里巴巴
  • 百度
  • 字节跳动
  • BiliBili
  • 小米
  • 163Cloud
  • PingCAP
  • 积梦智能
  • .....

标签:01,开篇,python,goroutine,并发,线程,Go,语言
来源: https://www.cnblogs.com/happy6666/p/16693338.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有