Loading

摘要: 一、Go语言精进之路读书笔记系列 第3部分 声明、类型、语句与控制结构 Go语言精进之路读书笔记第8条——使用一致的变量声明形式 Go语言精进之路读书笔记第9条——使用无类型常量简化代码 Go语言精进之路读书笔记第10条——使用iota实现枚举常量 Go语言精进之路读书笔记第11条——尽量定义零值可 阅读全文
posted @ 2024-02-07 18:10 brynchen 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 第19条 了解Go语言控制语句惯用法及使用注意事项 19.1 使用if控制语句时应遵循"快乐路径"原则 当出现错误时,快速返回; 成功逻辑不要嵌入if-else语句中; "快乐路径"当执行逻辑中代码布局上始终靠左,这样读者可以一眼看到该函数当正常逻辑流程; "快乐路径"的返回值一般在函数最后一行。 阅读全文
posted @ 2024-02-07 17:59 brynchen 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 18.1 Go代码块与作用域简介 Go规范定义了如下几种隐式代码块。 宇宙代(Universe)码块:所有Go源码都在该隐式代码块中,就相当于所有Go代码等最外层都存在一对大括号。 包代码块:每个包都有一个包代码块,其中放置着该包都所有Go源码 文件夹代码块:每个文件都有一个文件代码块,其中包含着该 阅读全文
posted @ 2024-02-07 17:45 brynchen 阅读(15) 评论(0) 推荐(0) 编辑
摘要: Go语言表达式 支持在同一行声明和初始化多个变量 支持在同一行对多个变量进行赋值(不同类型也可以) var a, b, c = 5, "hello", 3.45 a, b, c := 5, "hello", 3.45 a, b, c = 5, " hello", 3.45 Rob Pike 练习题( 阅读全文
posted @ 2024-02-07 17:44 brynchen 阅读(12) 评论(0) 推荐(0) 编辑
摘要: Go编译速度快的原因主要体现在以下三方面: Go要求每个源文件在开头处显式地列出所有依赖的包导入,这样Go编译器不必读取和处理整个文件就可以确定其依赖的包列表。 Go要求包之间不能存在循环依赖。这样一个包的依赖关系便形成了一张有向无环图。由于无环,包可以被单独编译,也可以并行编译。 已编译的Go包对 阅读全文
posted @ 2024-02-07 17:41 brynchen 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 15.1 Go语言的字符串类型 在Go语言中,无论是字符串常量、字符串变量还是代码中出现的字符串字面量,它们的类型都被统一设置为string 特点 string类型的数据是不可变的 对string进行切片化后,Go编译器会为切片变量重新分配底层存储而不是共用string的底层存储 string的底层 阅读全文
posted @ 2024-02-07 17:38 brynchen 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 14.1 什么是map map对value的类型没有限制,但是对key的类型有严格要求:key的类型应该严格定义了作为“==”和“!=”两个操作符的操作数时的行为,因此func、map、slice、chan不能作为map的key类型。 map类型不支持“零值可用”,未显式赋初值的map类型变量的零值 阅读全文
posted @ 2024-02-07 17:18 brynchen 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 13.1 切片究竟是什么 Go数组是值语义的,这意味着一个数组变量表示的是整个数组,对于元素类型长度较大或元素个数较多的数组,如果直接以数组类型参数传递到函数中会有不小的性能损耗。 这时很多人会使用数组指针来定义函数参数,但在Go语言中,更地道的方式是使用切片。 切片之于数组就像是文件描述符之于文件 阅读全文
posted @ 2024-02-07 14:25 brynchen 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 有些时候,零值并非最好的选择,我们有必要为变量赋予适当的初值以保证其后续以正确的状态参与业务流程计算,尤其是Go语言中的一些复合类型的变量。Go提供了复合字面值(composite literal)语法可以作为复合类型变量的初值构造器。 Go语言中的复合类型包括结构体、数组/切片和map。 Go提供 阅读全文
posted @ 2024-02-01 21:14 brynchen 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 11.1 Go类型的零值 Go语言规范中关于变量默认值的描述: 当通过声明或调用new为变量分配存储空间,或者通过复合文字字面量或调用make创建新值,且不提供显式初始化时,Go会为变量或值提供默认值。 Go规范定义的内置原生类型的默认值(零值): 所有整型类型:0 浮点类型:0.0 布尔类型:fa 阅读全文
posted @ 2024-02-01 20:54 brynchen 阅读(15) 评论(0) 推荐(0) 编辑