当前位置: 首页 > news >正文

【Go】重难点知识汇总

tips

  1. 统计代码行数的工具:cloc(Count Lines of Code) 安装教程
  2. 待续…

《Go语言设计与实现》

在这里插入图片描述

编译原理

  1. 理解编译器的词法与语法解析、类型检查、中间代码生成以及机器码生成过程
  2. 想要了解Go语言的实现原理,理解它的编译过程就是一个没有办法绕开的事情
  3. link

1. 将go语言源代码编译成汇编语言

go build -gcflags -S main.go

2. 编译过程涉及的术语和专业知识

  • 抽象语法树
  • 静态单赋值
  • 指令集

3. 编译原理

  • 词法与语法分析
  • 类型检查
  • 中间代码生成
  • 机器码生成

运行时

理解运行时中的调度器、网络轮询器、内存分配器、垃圾收集器的实现原理

基础知识

理解数组、切片、哈希表和字符串等数据结构的内部表示以及常见操作的原理
理解make、new、defer、select、for和range等关键字的实现
理解Go语言中的函数、方法以及反射等语言特性

1. 数组

  • 数组的访问和赋值需要同时依赖编译器和运行时
  • 它的大多数操作在编译期间都会转换成直接读写内存
  • 在中间代码生成期间,编译器还会插入运行时方法runtime.panicIndex调用防止发生越界错误

2. 切片

  • 切片,即动态数组,其长度不固定,可以向切片中追加元素,它会在容量不足时自动扩容
  • 整块拷贝内存仍然会占用非常多的资源,在大切片上执行拷贝操作时一定要注意对性能的影响

3. 哈希表

  • 实现哈希表的关键点在于哈希函数的选择,哈希函数的选择在很大程度上能够决定哈希表的读写性能
  • Go语言使用拉链法来解决哈希碰撞的问题实现了哈希表
  • 它的访问、写入和删除等操作都在编译期间转换成了运行时的函数或者方法

4. 字符串

  • 切片在go语言的运行时表示与字符串高度相似,所以常说字符串是一个只读的切片类型
  • 字符串上的写入操作都是通过拷贝实现的

5. 函数

  • go通过栈传递函数的参数和返回值
  • 通过堆栈传递参数,入栈的顺序是从右到左,而参数的计算是从左到右
  • 函数返回值通过堆栈传递并由调用者预先分配内存空间
  • 调用函数时都是传值,接收方会对入参进行复制再计算

6. 接口

  • 接口的类型转换
  • 类型断言以及动态派发机制
  • 函数调用时发生的隐式类型转换

7. 反射

  • 使用反射来动态修改变量
  • 判断类型是否实现了某些接口以及动态调用方法等功能

进阶知识

理解常见并发原语Mutex、WaitGroup以及扩展原语的使用和原理
理解HTTP、RPC、JSON等标准库的设计与原理

参考

  1. https://draven.co/golang/

相关文章:

  • vue使用笔记
  • 零基础上手Python数据分析 (21):图表选择困难症?常用可视化类型详解与应用场景指南
  • 基于STM32的室内环境监测系统
  • uView的u-modal不显示问题
  • 【数字图像处理】立体视觉基础(2)
  • 【OSG学习笔记】Day 6: Day 6: 几何体(Geometry)的创建与自定义
  • Graph Database Self-Managed Neo4j 知识图谱存储实践1:安装和基础知识学习
  • 如何高效定位Bug:测试工程师的问题诊断艺术
  • redis数据类型-地理空间GEO
  • 【Chrome插件开发】某视频网站的m4s视频/音频下载方案,及其Chrome插件实现-v250415
  • 美乐迪电玩客户端打包与资源替换实战教程
  • 2025软件测试常用面试问题及参考答案(附文档)
  • 如何解决消费者高频触发订单更新?
  • WeakSet:JavaScript 中容易被忽视的“弱集合”
  • spark和Hadoop的对比和联系
  • DCDC芯片,boost升压电路设计,MT3608 芯片深度解析:从架构到设计的全维度技术手册
  • 文档管理 Document Management
  • exception:com.alibaba.nacos.api.exception.NacosException: user not found! 解决方法
  • Django 入门实战:从环境搭建到构建你的第一个 Web 应用
  • linux kallsys
  • 影子调查丨掉落的喷淋头:太原一7天酒店加盟店消防设施造假迷局
  • 神二十成功对接空间站
  • 限时离境、关闭领空、暂停贸易,巴基斯坦宣布一系列对印反制措施
  • 李良生已任应急管理部党委委员、政治部主任
  • 范福生受审:任高密市长、市委书记时滥用职权,致公共财产利益重大损失
  • 云南洱源县4.8级地震:房屋受损442户,无人员伤亡报告