首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Go
XQGang
创建于2022-05-28
订阅专栏
Go 语言学习笔记
等 1 人订阅
共17篇文章
创建于2022-05-28
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
「读书笔记」了解接口类型变量的内部表示
接口类型变量在运行时表示为eface和iface,eface用于表示空接口类型变量,iface用于表示非空接口类型变量。当且仅当两个接口类型变量的类型信息相同,且数据指针所指数据相同时,两接口类型相等
「读书笔记」了解变长参数函数的妙用
了解变长参数函数能在特定场合简化代码逻辑;利用变长参数函数可以在有限情况下模拟函数重载、可选参数和默认参数;还能够实现功能选项模式。
「读书笔记」方法集合决定接口实现
方法集合是类型与接口间隐式关系的纽带,只有当类型的方法集合是某接口类型的超集时,我们才说该类型实现了某接口。类型 T 的方法集合是以 T 为 receiver 类型的所有方法的集合。
「读书笔记」理解方法的本质以选择正确的 receiver 类型
Go 方法的本质:一个以方法所绑定类型实例为第一个参数的普通函数。Go 语法糖使得我们在通过类型实例调用类型方法时无需考虑实例类型与 receiver 参数类型是否一致,编译器会为我们做自动转换。
「读书笔记」使用 defer 让函数更简洁、更健壮
defer让资源释放变得优雅且不易出错,简化了函数实现逻辑,提高了代码可读性,让函数实现变得更加健壮。理解 defer 运作机制;了解 defer 常见用法;了解关于 defer 使用的几个关键问题。
「读书笔记」让自己习惯于函数是“一等公民”
Go函数可以像变量值那样被赋值给变量、作为参数传递、作为返回值返回和在函数内部创建等;函数可以像变量那样被显式类型转换;函数式编程风格:柯里化、函子、延续传递式等;不要为了符合特定风格而滥用函数特质。
「读书笔记」在 init 函数中检查包级变量的初始状态
深入理解init函数的3个要点:init 函数的特点包括运行时调用、顺序、仅执行一次;Go 程序的初始化顺序;init 函数的包出厂前的唯一“质检员”
「读书笔记」了解 Go 语言控制语句惯用法及使用注意事项
使用 if 语句时遵循“快乐路径”原则;小心 for range 的循环变量重用;明确 break 和 continue 执行后的真实目的地;考虑用 case 表达式列表替代 fallthrough。
「读书笔记」理解 Go 语言代码块与作用域
理解 Go 代码块和作用域的规则将有助于我们快速解决类似“变量未定义”的错误和上一层变量被内层同名变量遮蔽(shadow)的问题,同时对于正确理解 Go 程序的执行流也大有裨益。
「读书笔记」理解 Go 语言表达式的求值顺序
当普通求值顺序与包级变量的初始化依赖顺序一并使用时,后者优先级更高,但单独每个表达式中的操作数求值依旧按照普通求值顺序(从左到右)的规则。重点关注switch和select中表达式的“惰性求值”规则。
「读书笔记」理解 Go 语言的包导入
Go编译器在编译过程中必然要使用的是编译单元所依赖的包的源码;其包源码搜索路径由基本搜索路径和包导入路径组成,两者构成了源码搜索路径空间;包名冲突问题可以由显式指定包名的方式解决。
「读书笔记」了解 string 实现原理并高效使用
Go 语言为 string 类型提供了强大的内置操作支持,包括基于+/+=的字符串连接操作,基于==、>等的比较操作,O(1)复杂度的长度获取,对 string 与 slice 的相互转换提供优化等。
「读书笔记」了解 map 实现原理并高效使用
不要依赖 map 的元素遍历顺序;map 不是线程安全的,不支持并发写;不要尝试获取 map 中元素地址;尽量使用 cap 参数创建 map,以提升 map 平均访问性能,减少频繁扩容带来不必要损耗。
「读书笔记」了解切片实现原理并高效使用
切片之于数组就像是文件描述符之于文件。切片是数组的“描述符”,切片这个描述符是固定大小的,无论底层的数组元素类型有多大,切片打开的窗口有多长。除此之外,切片还提供动态扩容等强大功能。
「读书笔记」声明、零值可用、复合字面值
使用一致的变量声明形式;使用无类型常量简化代码;使用 iota 实现枚举常量;尽量定义零值可用的类型;使用复合字面值作为初值构造器。Go语言“零值可用”理念带来了很多便利,但并非所有类型都是零值可用。
「读书笔记」项目结构、代码风格与标识符命名
计算机科学中只有两件难事:缓存失效和命名。Go 命名的两个原则:简单且一致;利用上下文辅助命名,让最短的名字携带足够多的信息。
「读书笔记」熟知 Go 语言的一切
Go 语言的设计哲学:追求简单,少即是多;偏好组合,正交解耦;原生并发,轻量高效;面向工程,“自带电池”。