摘要:
一、Go语言精进之路读书笔记系列 第3部分 声明、类型、语句与控制结构 Go语言精进之路读书笔记第8条——使用一致的变量声明形式 Go语言精进之路读书笔记第9条——使用无类型常量简化代码 Go语言精进之路读书笔记第10条——使用iota实现枚举常量 Go语言精进之路读书笔记第11条——尽量定义零值可 阅读全文
摘要:
第19条 了解Go语言控制语句惯用法及使用注意事项 19.1 使用if控制语句时应遵循"快乐路径"原则 当出现错误时,快速返回; 成功逻辑不要嵌入if-else语句中; "快乐路径"当执行逻辑中代码布局上始终靠左,这样读者可以一眼看到该函数当正常逻辑流程; "快乐路径"的返回值一般在函数最后一行。 阅读全文
摘要:
18.1 Go代码块与作用域简介 Go规范定义了如下几种隐式代码块。 宇宙代(Universe)码块:所有Go源码都在该隐式代码块中,就相当于所有Go代码等最外层都存在一对大括号。 包代码块:每个包都有一个包代码块,其中放置着该包都所有Go源码 文件夹代码块:每个文件都有一个文件代码块,其中包含着该 阅读全文
摘要:
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 练习题( 阅读全文
摘要:
Go编译速度快的原因主要体现在以下三方面: Go要求每个源文件在开头处显式地列出所有依赖的包导入,这样Go编译器不必读取和处理整个文件就可以确定其依赖的包列表。 Go要求包之间不能存在循环依赖。这样一个包的依赖关系便形成了一张有向无环图。由于无环,包可以被单独编译,也可以并行编译。 已编译的Go包对 阅读全文
摘要:
15.1 Go语言的字符串类型 在Go语言中,无论是字符串常量、字符串变量还是代码中出现的字符串字面量,它们的类型都被统一设置为string 特点 string类型的数据是不可变的 对string进行切片化后,Go编译器会为切片变量重新分配底层存储而不是共用string的底层存储 string的底层 阅读全文
摘要:
14.1 什么是map map对value的类型没有限制,但是对key的类型有严格要求:key的类型应该严格定义了作为“==”和“!=”两个操作符的操作数时的行为,因此func、map、slice、chan不能作为map的key类型。 map类型不支持“零值可用”,未显式赋初值的map类型变量的零值 阅读全文
摘要:
13.1 切片究竟是什么 Go数组是值语义的,这意味着一个数组变量表示的是整个数组,对于元素类型长度较大或元素个数较多的数组,如果直接以数组类型参数传递到函数中会有不小的性能损耗。 这时很多人会使用数组指针来定义函数参数,但在Go语言中,更地道的方式是使用切片。 切片之于数组就像是文件描述符之于文件 阅读全文