非零基础自学Golang

学习文档地址:https://www.topgoer.cn/

本文仅用于学习记录,不存在任何商业用途,如侵删【已联系过文档作者】

文章目录

  • 非零基础自学Golang
  • 1 前景
    • 1.1 Go语言为并发而生
    • 1.2 Go 语言简单易学
      • 1.2.1 语法简洁
      • 1.2.2 代码风格统一
      • 1.2.3 开发效率高
    • 1.3 使用Go 的公司
    • 1.4 Go 适合做什么
    • 1.5 学习Go语言 的前景

1 前景

1.1 Go语言为并发而生

go语言(或 Golang)是Google开发的开源编程语言,诞生于2006年1月2日下午15点4分5秒,于2009年11月开源,2012年发布go稳定版。

Go语言 Logo:

Go语言在多核并发上拥有原生的设计优势,Go语言从底层原生支持并发,无须第三方库、开发者的编程技巧和开发经验。

go是非常年轻的一门语言,它的主要目标是“兼具Python 等动态语言的开发速度和C/C++等编译型语言的性能与安全性”。

很多公司,特别是中国的互联网公司,即将或者已经完成了使用 Go 语言改造旧系统的过程。经过 Go 语言重构的系统能使用更少的硬件资源获得更高的并发和I/O吞吐表现。充分挖掘硬件设备的潜力也满足当前精细化运营的市场大环境。

Go语言的并发是基于 goroutine 的,goroutine 类似于线程,但并非线程。

goroutine 是 Go语言中的轻量级线程实现,由 Go 运行时(runtime)管理。Go 程序会智能地将 goroutine 中的任务合理地分配给每个 CPU。

Go 程序从 main 包的 main() 函数开始,在程序启动时,Go 程序就会为 main() 函数创建一个默认的 goroutine。

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

goroutine的特点:

  1. goroutine具有可增长的分段堆栈。这意味着它们只在需要时才会使用更多内存。
  2. goroutine的启动时间比线程快。
  3. goroutine原生支持利用channel安全地进行通信。
  4. goroutine共享数据结构时无需使用互斥锁。

1.2 Go 语言简单易学

1.2.1 语法简洁

Go 语言简单易学,学习曲线平缓,不需要像 C/C++ 语言动辄需要两到三年的学习期。Go 语言被称为“互联网时代的C语言”。Go 语言的风格类似于C语言。

其语法在C语言的基础上进行了大幅的简化,去掉了不需要的表达式括号,循环也只有 for 一种表示方法,就可以实现数值、键值等各种遍历。

1.2.2 代码风格统一

Go 语言提供了一套格式化工具——go fmt。一些 Go 语言的开发环境或者编辑器在保存时,都会使用格式化工具进行修改代码的格式化,这样就保证了不同开发者提交的代码都是统一的格式。

1.2.3 开发效率高

Go语言实现了开发效率与执行效率的完美结合,让你像写Python代码(效率)一样编写C代码(性能)。

1.3 使用Go 的公司

  • Google

    https://github.com/kubernetes/kubernetes

  • Facebook

    https://github.com/facebookgo

  • 腾讯

  • 百度

  • 360开源日志系统

    https://github.com/Qihoo360/poseidon

1.4 Go 适合做什么

  • 服务端开发
  • 分布式系统,微服务
  • 网络编程
  • 区块链开发
  • 内存KV数据库,例如boltDB、levelDB
  • 云平台

1.5 学习Go语言 的前景

目前Go语言已经广泛应用于人工智能、云计算开发、容器虚拟化、大数据开发、数据分析及科学计算、运维开发、爬虫开发、游戏开发等领域。

Go语言简单易学,天生支持并发,完美契合当下高并发的互联网生态。Go语言的岗位需求持续高涨,目前的Go程序员数量少,待遇好。

抓住趋势,要学会做一个领跑者而不是跟随者。

国内Go语言的需求潜力巨大,目前无论是国内大厂还是新兴互联网公司基本上都会有Go语言的岗位需求。【必须拿下!!】

非零基础自学Golang 1 前景相关推荐

  1. 非零基础自学Golang 第18章 HTTP编程(下) 18.2 HTTP服务端 18.2.2 启动HTTP服务器 18.2.3 启动HTTPS服务器

    非零基础自学Golang 文章目录 非零基础自学Golang 第18章 HTTP编程(下) 18.2 HTTP服务端 18.2.2 启动HTTP服务器 18.2.3 启动HTTPS服务器 第18章 H ...

  2. 非零基础自学Golang 第3章 基本变量与类型 3.1 Go语言变量

    非零基础自学Golang 文章目录 非零基础自学Golang 第3章 基本变量与类型 3.1 Go语言变量 3.1.1 声明变量 3.1.2 初始化变量 3.1.3 变量值交换 3.1.4 匿名变量 ...

  3. 非零基础自学Golang 第15章 Go命令行工具 15.4 注释文档(doc)

    非零基础自学Golang 文章目录 非零基础自学Golang 第15章 Go命令行工具 15.4 注释文档(doc) 第15章 Go命令行工具 15.4 注释文档(doc) Go语言文档工具go do ...

  4. 非零基础自学Golang 第1章 走进Go 1.2 Go语言官方文档 1.3 学好Go 的建议

    非零基础自学Golang 文章目录 非零基础自学Golang 第1章 走进Go 1.2 Go语言官方文档 1.3 学好Go 的建议 1.3.1 了解语言特性及自身需求 1.3.2 动手写代码 1.3. ...

  5. 非零基础自学Golang 第17章 HTTP编程(上) 17.3 爬虫框架gocolly 17.3.1 gocolly简介

    非零基础自学Golang 文章目录 非零基础自学Golang 第17章 HTTP编程(上) 17.3 爬虫框架gocolly 17.3.1 gocolly简介 第17章 HTTP编程(上) 17.3 ...

  6. 非零基础自学Golang 第1章 走进Go 1.1 Go编程语言概述 1.1.2 Go 语言特性及应用场景

    非零基础自学Golang 文章目录 非零基础自学Golang 第1章 走进Go 1.1 Go编程语言概述 1.1.2 Go 语言特性及应用场景 第1章 走进Go 1.1 Go编程语言概述 1.1.2 ...

  7. 非零基础自学计算机操作系统 第1章 操作系统概述 习题一

    非零基础自学计算机操作系统 第1章 操作系统概述 习题一 [1]什么是操作系统?操作系统有哪些特性? 答:操作系统是管理计算机硬件与软件资源的计算机程序,它的主要特性有并发性.易用性.稳定性和异步性. ...

  8. 非零基础自学计算机操作系统 第1章 操作系统概述 1.4 操作系统的分类 1.4.1 多道批处理操作系统 1.4.2 分时操作系统

    非零基础自学计算机操作系统 文章目录 非零基础自学计算机操作系统 第1章 操作系统概述 1.4 操作系统的分类 1.4.1 多道批处理操作系统 1.4.2 分时操作系统 第1章 操作系统概述 1.4 ...

  9. 非零基础自学Java (老师:韩顺平) 第10章 面向对象编程(高级部分) 10.6 抽象类

    非零基础自学Java (老师:韩顺平) ✈[[零基础 快速学Java]韩顺平 零基础30天学会Java] 第10章 面向对象编程(高级部分) 文章目录 非零基础自学Java (老师:韩顺平) 第10章 ...

最新文章

  1. 常用的shell脚本案例(14.04.15更新)
  2. php 调用扫描仪,如何从浏览器中触发扫描仪?
  3. WPF 问题 PresentationCore.dll!System.Windows.Media.Composition.DUCE.Channel.SyncFlush() 分析
  4. 安装 CORD 之前需要了解的术语
  5. Epx5 MSF基础应用 20154326杨茜
  6. ipmitool介绍_ipmitool命令行使用详解
  7. 100套高质量的免费 PSD 界面设计素材【系列一】
  8. js a/a中this的使用
  9. 强烈推荐!PPT实战技巧精华归纳,有这一篇就够啦!
  10. 编程路上,对于迷失者的一些小小建议
  11. 大学生静态HTML网页源码——佛山旅游景点介绍网页代码 家乡旅游网页制作模板 web前端期末大作业
  12. FS5175AESOP8多串锂电池同步降压充电IC
  13. 关于Unity ContentSizeFitter的坑
  14. iOS-Building for iOS Simulator, but the linked and embedded framework ‘XX.framework‘ was built for
  15. 量子退火Python实战(2):护士调度问题(NSP : Nurse Scheduling Problem)
  16. Excel 单元格中插入附件
  17. 如何测量锂电池的电量
  18. Android Fragment异常:java.lang.IllegalStateException: Fragment XXXFragment not attached to Activity
  19. Linux实战教学笔记42:squid代理与缓存实践(一)
  20. Excel表格数据的导出方法

热门文章

  1. RPC — 微服务之gRPC框架技术解析
  2. Codeforces 1592A
  3. 猪与蟒(pig and python)
  4. ORA-01189的完整解决过程(File is from a different RESETLOGS than previous files)
  5. PYTHON代码换行的几种方式
  6. cocos2d-x2.2实现椭圆运动,参数为中心点坐标和长半轴、短半轴
  7. 一通百通,一文实现灵活的K8S基础架构!
  8. 35岁的程序员,该给领导送礼了!
  9. rosedb 上 Github Trending 啦!
  10. 发现一个不错的java技术网站ImportNew