笔记
-
知识点:
-
1、go语言的类型别名和类型声明
-
type name = string // 类型别名 type name string // 类型声明
-
-
2、结构体赋值
-
1、使用键值对初始化结构体
-
ins := 结构体类型名 { 字段1:字段1的值, 字段2:字段2的值, ... }
-
-
2、使用多个值的列表初始化结构体
-
Go 语言可以在“键值对”初始化的基础上忽略“键”, 也就是说,可以使用多个值的列表初始化结构体的字段
-
书写格式:
-
ins := 结构体类型名 { 字段1的值, 字段2的值, ... }
-
使用这种格式初始化时,必须初始化所有字段,每个字段初始化的顺序和声明顺序要保持一致,
-
键值对 和 值列表 不能混用
-
-
-
3、初始化匿名结构体
-
匿名结构体没有类型名称,无需通过 type 关键字定义就可以直接使用
-
匿名结构体定义格式和初始化写法
-
ins := struct { // 匿名结构体字段定义 字段1 字段类型1 字段2 字段类型2 ... }{ //字段值初始化 初始化字段1:字段1的值, 初始化字段2:字段2的值, ... }
-
-
-
4、Go 语言构造函数
-
Go 语言的类型或结构体没有构造函数的功能,但是我们可以使用结构体的过程来模拟实现构造函数
-
type Cat struct { Color string Name string } // 用名字构造猫结构的函数,返回 Cat 指针 func NewCatByName(name string) *Cat { return &Cat{ // 取地址实例化猫的结构体 Name:name, } } func NewCatByColor(color string) *Cat { return &Cat{ Color:color, } }
-
Go 语言中没有提供构造函数相关的特殊机制,用户根据自己的需求,将参数使用函数传递到结构体构造参数中即可完成构造函数的任务。
-
-
-
-
Go 语言中的 rune 类型浅析
-
概念:
- rune 是Go 语言中的一种特殊的类型,他是 int32 的别名,几乎所有方面等同于 int32
-
作用:
-
用于区分字符值和整数值
-
package main import "fmt" func main() { var str = "hello 世界" fmt.Println("len(str)",len(str) }
-
结果为:
-
len(str), 12
-
从字符串字面量看 len(str) 的结果应该是 8 ,但在 Golang 中 string 类型底层是通过 byte 大户组实现的,在 unicode 编码中中文字符占 两个字节,而在 utf - 8 编码中,中文站三个字节,而 Golang 默认编码是 utf-8.
-
那么,如果想获取真实的字符串长度而不是其多占的字节数,有两种方法:
-
方法一:
-
使用 Unicode/utf-8 包中的 RuneCountInString 方法
-
str = "hello 世界" fmt.Println(utf8.RuneCountInString(str))
-
方法二:
-
将字符串转换为 rune 类型数据在计算长度
-
str = "hello 世界" fmt.Println("rune", len([]rune(str)))
-
-
-
-