Go语言学习
  • README
  • Go 基础
    • go语言介绍
    • go语言主要特性
    • go内置类型和函数
    • init函数和main函数
    • 下划线
    • iota
    • 字符串
    • 数据类型:数组与切片
    • 数据类型:byte、rune与字符串
    • 变量的5种创建方式
    • 数据类型:字典
    • 指针
    • 数据类型:指针
    • 类型断言
    • 流程控制:defer延迟执行
    • 异常机制:panic和recover
    • 函数
    • go依赖管理
    • go中值传递、引用传递、指针传递区别
  • 标准库
    • Go net/http包
  • 数据结构
    • 哈希表
      • 为什么对 map 的 key 或 value 进行取址操作是不允许的
  • Gin
    • gin 快速开始
    • gin-swagger用法
  • Go 进阶
    • Go 指针
    • Go 中的 GC 演变是怎样的?
    • Go 的堆和栈
  • 面向对象
    • make 和 new 的区别
    • new(T) 和 &T{} 有什么区别?
  • 并发编程
    • Channel
    • Go语言 CSP 并发模型
    • GMP 模型原理
      • GMP 模型为什么要有 P ?
    • Go 协程池(goroutine pool)
    • Go语言常见的并发模式
    • Go并发实践:主动停止goroutine
  • 最佳实践
    • 发布Go语言模块
  • 软件包
    • 常用的GoLang包工具
    • Go的UUID生成
    • 现代化的命令行框架Cobra
    • 配置解析神器Viper
    • Go发送邮件gomail
    • Go反射框架Fx
    • NSQ消息队列的使用
    • Go爬虫框架colly
    • grpc-go 的安装和使用
Powered by GitBook
On this page
  • Go语言为并发而生
  • go适合做什么

Was this helpful?

  1. Go 基础

go语言介绍

Go语言为并发而生

go语言(或 Golang)是Google开发的开源编程语言,诞生于2006年1月2日,于2009年11月开源,2012年发布go稳定版。Go语言在多核并发上拥有原生的设计优势,Go语言从底层原生支持并发,无须第三方库、开发者的编程技巧和开发经验。

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

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

goroutine的特点:

  1. goroutine 具有可增长的分段堆栈。这意味着它们只在需要时才会使用更多内存。

  2. goroutine 的启动时间比线程快。

  3. goroutine 原生支持利用channel安全地进行通信。

  4. goroutine 共享数据结构时无需使用互斥锁。

go适合做什么

  • 服务端开发

  • 分布式系统,微服务

  • 网络编程

  • 区块链开发

  • 内存KV数据库,例如boltDB、levelDB

  • 云平台

PreviousGo 基础Nextgo语言主要特性

Last updated 3 months ago

Was this helpful?