Go语言类型的本质
内置类型
整型类型、浮点类型、字符串类型和布尔类型,对这些值进行增加或者删除的时候,会创建一个新值。当把这些类型的值传递给方法或者函数时,应该传递一个对应值的副本。
引用类型
结构类型
疑问点:
1、这些值进行增加或者删除的时候,会创建一个新值
2、引用类型、结构类型没看
bool类型知识点
1、Go语言对于值之间的比较有非常严格的限制,只有两个类型相同的值才可以进行比较,否则其中一个值的类型必须在被转换为和另外一个值的类型相同之后才可以进行比较。
2、&& 的优先级比 || 高(&& 对应逻辑乘法,|| 对应逻辑加法,乘法比加法优先级要高)
3、布尔值并不会隐式转换为数字值 0 或 1,反之亦然。
字符串
基本理解:字符串是字符的一个序列,字符是UTF-8编码格式。当字符为 ASCII 码表上的字符时则占用 1 个字节,其它字符根据需要占用 2-4 个字节。
工具用法
1、ASCII字符串长度使用len()函数。一个中文三个长度。
Unicode字符串长度使用utf8.RuneCountlnString()函数。
var asciiStr string = "abcd"
fmt.Println(len(asciiStr))
fmt.Println(utf8.RuneCountInString(asciiStr))
chineseStr := "王乾"
fmt.Printf("%d\n", len(chineseStr))
fmt.Println(utf8.RuneCountInString(chineseStr))
输出结果:
wangqiandeMacBook-Pro:Golang_Study wangqian$ go run src/day_02/Bool类型/bool.go
4
4
6
2
2、字符串检索
strings.Index:正向搜索子字符串。
strings.LastIndex:反向搜索子字符串。
str1[0] 字符对应的ASCII编码表
str1[0:] 以位置为0字符开始到结尾字符组成的字符串
3、字符串遍历的两种方法
ASCII 字符串遍历直接使用下标。
Unicode字符串遍历用for range
printf("%c",a);输出单个字符。
printf("%d",a);输出十进制整数。
printf("%f",a);输出十进制浮点数.
printf("%s",a);输出字符串。
4、GO语言修改字符串
Go语言中的字符串和其他高级语言(Java、C#)一样,默认是不可变的
修改字符串时,可以将字符串转换为 []byte 进行修改。(是重新生成了一个字符串)
5、字符串拼接方式
1、+拼接 2、使用字节缓冲拼接字符串 bytes.Buffer
var stringBuffer bytes.Buffer
string1 := "hhhh"
string2 := "王乾"
stringBuffer.WriteString(string1)
stringBuffer.WriteString(string2)
fmt.Println(stringBuffer.String())