Golang进阶: 数组、切片、字符串
1.关系 数组、切片和字符串有着密切的关系。切片和字符串的底层都是基于数组实现的。 2.数组 定义 固定长度的相同数据类型的元素组成的; 长度是数组类型的组成部分,比如 [3]int 和 [5]int 不是相同的数据类型; 长度不同,其对应的指针类型也不同; Go 语言中数组是值语义。一个数组变量即表示整个数组,它并不是隐式的指向第一个元素的指针(比如 C 语言的数组),而是一
1.关系 数组、切片和字符串有着密切的关系。切片和字符串的底层都是基于数组实现的。 2.数组 定义 固定长度的相同数据类型的元素组成的; 长度是数组类型的组成部分,比如 [3]int 和 [5]int 不是相同的数据类型; 长度不同,其对应的指针类型也不同; Go 语言中数组是值语义。一个数组变量即表示整个数组,它并不是隐式的指向第一个元素的指针(比如 C 语言的数组),而是一
面向对象 匿名字段 见匿名嵌套结构体 接口 interface 定义对象方法的规范,只定义规范,具体实现由对应的对象实现,在 Go1.18 之前,接口只定义方法,只有方法集(method set),在 Go1.18 版本出现了泛型,接口同时也转变为了类型集(type Set),可以用于定义类型。 在这里先按照 Go1.18 之前的版本进行学习归纳,在后面再对泛型进行学习之后,再学习归纳接口对类型的
异常处理 Go 没有结构化的异常,只能使用 panic 内置函数抛出异常,recover 内置函数在 defer 中捕获异常,然后程序正常运行。 panic func panic(v any) 抛出异常的内置函数; 可以在任何地方调用; recover func recover() any 捕获 panicking 行为的函数; 可以在任何地方定义,但是只有在 defer 定义的
循环语句 for 语法 Go 语言 for 循环有三种形式 for init; condition ; post {} for condition {} for {} 第一种形式和其他语言一样 第二种形式相当于其他语言的 while 循环 第三者形式相当于第二种形式为关系表达式为 true 的结果,无限循环 示例 第一种 func Test_D
条件语句 if 规范 条件表达式的括号省略,如果写上了,保存之后 Go 会自动纠正规范,去掉括号 条件表达式定义的变量,在执行体内可以访问 条件表达式可以多条语句,使用分号区分,取最后一条作为判断语句 var a int = 0 func IncOne() int { a++ return a } func Test_D_0(t *testing.T) {
nil 空值指针 类型转换 Go 语言只有强制类型转换,没有隐式转换 基本格式: T(表达式) T表示对应要转为的数据类型 func Test_B_11(t *testing.T) { var a int = 10 var b string = "ABC" var c string = "哇哈哈WHH" a2 := float32(a) b2 := []byte(b)