一、Go语言的起源、发展以及普及
1. 学习Go语言
译 Golang 介绍和环境安装 | Golang 教程系列| Go 主题月](juejin.cn/post/694249…)
1.1 Go语言起源
1.2 Go语言的主要特征与发展的环境
1.3 Go语言常犯错误汇总
1.4 Golang书籍推荐
- 1.4.1 Go入门指南 比较适合新手,内容相对基础一些
- 1.4.2 Go语言圣经 书如其名
- 1.4.3 Go语言中文网 找对圈子,学的更快
- 1.4.4 菜鸟教程 这个网站非常适合快速上手某门语言
- 1.4.5 Go语言高级编程 内容适合进阶
- 1.4.6 go语言原本 欧神出品,虽然号称进度只有9.9%/100%,但不妨碍它的优秀,值得一看
- 1.4.7 golang设计模式 设计模式 Golang实现,《研磨设计模式》的golang实现
- 1.4.8 Go实战开发 作者是著名的 Go 开源项目 beego 的作者,他的最佳实践非常值得阅读
- 1.4.9 Go palyground 不用搭建本地 Go 环境,在线就编写 Go 的代码
1.5 Go语言开源项目
- xgen-编写XSD工具基础库,可将XML模式定义为多语言类型或声明的代码
- GQLEngine-高性能Go语言的GraphQL服务端落地框架
- Orange 一款基于Golang语言的Web开发框架
- Go-admin -基于Golang快速搭建可视化数据管理后台的框架
- Go-snowflake Go语言实现的snowflake算法,为分布式系统实现唯一ID,单机测试1s可生成20id
- KubeVela 一个简单易用且高度可扩展的应用管理平台与核心引擎
- TiDB 见识过mysql性能瓶颈之后你会想要选择的一款数据库
- EasyMIDI EasyMidi是一个简单可靠的库,用于处理标准Midi文件(SMF)。
1.6 Go语言环境安装
下载地址: www.golangtc.com/download
GOPATH
二、Go工作环境设置
1. 编辑器
- Jetbrains GoLand 强烈推荐
- Jetbrains IDEA + go插件
- VS Code
- Atom
- liteide
- Sublime Text
2. 依赖管理
- glide
- 安装:<https://glide.sh/>
- 初始化
- 依赖下载
- mod
3. Go源码发布
三、包、函数、变量、常量、数据类型
1. 包相关
1.1 包
1.2 第三方包
1.3 导入语句
1.3.1 分组导入语句
1.3.2 多个导入语句
1.4 导出名
2. 函数相关
2.1 函数操作
从内存分配策略(堆、栈)的角度分析,函数传递指针真的比传值效率高吗?
2.2 函数多返回值
通过汇编看golang函数的多返回值 | 🏆 技术专题第二期征文
2.3 函数值
2.3.1 函数的闭包
3. 变量
3.1 变量简介
golang面试题:reflect(反射包)如何获取字段tag?为什么json包不能导出私有变量的tag?
3.2变量的初始化
3.3短变量声明
3.4 零值
没有明确初始值的变量声明会被赋予他们的零值
编程书说的“Go程序员应该让聚合类型的零值也具有意义”是在讲什么
- 零值是:
- 数值类型为0
- 布尔类型为false
- 字符串为””(空字符串)
- 零值和空值的关系
- 零值的空值的区别
4. 常量
4.1 常量
4.2 数值常量
5. 基本类型
5.1 bool
5.2 string
详解Go regexp包中 ReplaceAllString 的用法
golang的fmt包String(),Error(),Format(),GoString()的接口实现
5.3 int int8 int16 int32 int64uint uint8 uint16 uint32 uint64 uintptr
从goim定制, 浅谈 go interface 解耦合与gRPC
golang面试题:能说说uintptr和unsafe.Pointer的区别吗?
5.4 byte // uint8 的别名
Strings、bytes and runes — 就要学习 Go 语言
go中的strings, bytes, runes 和 characters
5.5 rune unicode码点
Strings、bytes and runes — 就要学习 Go 语言
Golang 中[]byte, string和[]rune的相互转化的底层原理和剖析
5.6 float32 float64
5.7complex64 complex128
5.8 类型转换
Golang 中一个 time.Duration 相关类型转换问题
5.9 类型推倒
四、流程控制语句
流程控制语句:for、if、else、switch、defer
1. 循环语句
1.1 for
1.1.1 for循环
Golang 高并发编程For循环中使用Goroutine最容易犯的错误
[Golang]这几个for-range的坑,你必须要会呀,铁汁
1.1.2 初始化语句
1.1.3 条件表达式
1.1.4 循环条件
1.1.5 后置语句
2. 判断语句
2.1 IF
2.1.1 if 的简短语句
2.1.2 if 和 else
2.2 switch
switch 的求值顺序
3. 后置调用 – defer
3.1 defer
包含该defer语句的函数执行完毕时,defer后的函数才会被执行 –
推迟调用
在一个函数中执行多条defer语句,它们的执行顺序与声明顺序相反。
3.1.1 原理
推迟的函数调用会被压入一个
栈
中。当外层函数返回时,被推迟的函数会按照后进先出的顺序调用。
五、底层数据结构
1. 指针
Go 拥有指针。指针保存了值的内存地址。
2. 结构体
一个结构体(struct)就是一组字段(field)。
2.1 结构体字段
结构体字段使用点号来引用
2.2 结构体指针
结构体字段可以通过结构体指针来访问
2.3 结构体声明
结构体声明可以通过直接列出字段的值来新分配一个结构体。
3. 数组
类型[n]T表示拥有n个T类型的值的数组。
Go之[]byte字节数组与string字符串相互转换juejin.cn/post/684490…
4. 切片
每个数组的大小都是固定的。而切片则为数组元素提供动态大小的、灵活的视角。在实践中,切片比数组更常用。
4.1 切片定义
切片就像引用的数组,切片并不直接存储数据,它只是描述了底层数组中的一段。
4.2 切片文法
切片文法类似于没有长度的数组文法。
4.3 切片的默认行为
4.4 切片的长度与容量
4.5 nil切片
连nil切片和空切片一不一样都不清楚?那BAT面试官只好让你回去等通知了。
4.6 用make创建切片
4.7 切片的切片
切片可包含任何类型,甚至包括其它的切片。
4.8 向切片追加元素
4.9 range
for循环的range形式可遍历切片或映射。
5. 映射(map)
5.1 映射的文法
5.2 修改映射
五、方法和接口
1. 方法
- 指针接收者
- 方法与指针重定向
- 选择值或指针作为接收者
2. 接口
2.1 接口理解
2.2 接口与隐式形式
2.3 接口值
2.3.1 nil 的接口值
2.3.2 空接口
2.4 接口类型断言
2.5 接口类型选择
2.6 Stringer
六、错误异常
1. 错误
[译] Part 31: golang 中的自定义 error
七、IO读取
1. Reader
Golang 最细节篇 —— Reader,ReaderAt 的区别,你如果是做存储的,可千万别搞错了;
2. 图像
golang 图像验证码 转载
3. 阻塞&非阻塞
Golang 实现轻量、快速的基于 Reactor 模式的非阻塞 TCP 网络库
4. 同步vs异步
面试官让我用channel实现sync包里的同步锁,是不是故意为难我?
Visual Studio Live Share – 和你的队友同步共享代码,即时编辑
kingtask:一个由 Go 开发的轻量级的异步定时任务系统
用一个简易的 web chat 说说 Python、Golang、Nodejs 的异步
5. Select
八、并发
1. 协程相关
Golang 的 协程调度机制 与 GOMAXPROCS 性能调优
2. 原子性、可见性、有序性
3. 并发控制
go并发之goroutine和channel,并发控制入门篇
九、语言特性
1. Goroutine
2. Channel
go语言之行–golang核武器goroutine调度原理、channel详解
Golang —— goroutine(协程)和channel(管道)
3. GMP模型
十、框架
1. Web框架
1.1 Revel
1.2 Beego
1.3 Martini
1.4 Gin Gonic
1.5 Buffalo
1.6 Goji
1.7 Tiger Tonic
1.8 Gocraft
1.9 Mango
1.10 GORM
2. 微服务框架
2.1 go-kit
2.2 Micro
2.3 go-zero
2.4 gRPC
Go RPC入门指南1:RPC的使用边界在哪里?如何实现跨语言调用
十一、性能剖析
1. Go语言性能分析
多维度思考:如何提高项目的开发时间、提高安全性、提高运行速度,从多个维度带来的一些思考。
十二、问题排查
十三、Golang面试
今天的文章对Golang一知半解?这里是上百篇掘金Golang优质文章| Go主题月分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/17862.html