一、字符
Go 中,独立的字母、数字和符号被统称为字符。
通过拼接多个字符并使用双引号包裹起来,就得到了字符串字面量,在 Go 中使用 string
表示。
独立的字符需要使用英文的单引号包裹起来,就像下面的代码里一样:
1
2var w = 'a'
代码点
实际上计算机存储字符、符号和表情的时候,存储的是它们对应的一个到多个数字,这些数字称为 代码点。
统一码联盟(Unicode Consortium)定义了每个字符对应的代码点。
例如,大写字母 A 对应的代码点为 65,表情???? 对应的代码点为 128515。
这些可以使用格式化输出中的 %c
和 %v
来验证。
1
2
3
4fmt.Printf("%c %[1]vn", 'A') // A 65 fmt.Printf("%c %[1]vn", '????') // ???? 128515
rune 类型
Go 中使用 rune
(符文)类型用于表示单个Unicode 的代码点,该类型是 int32
类型的别名。
1
2
3
4
5var pi rune = 960 var alpha rune = 940 fmt.Printf("%v -> %[1]c n%v -> %[2]cn", pi, alpha)
以上代码将会输出
1
2
3960 -> π 940 -> ά
实际上二进制数据可以使用 byte
类型表示,它是 uint8
类型的别名。
byte
也可以表示 美国信息交换标准代码(ASCII)中的英文字符(总供 128个字符,包含了英文标点符号)。
1
2
3
4var bang byte = 33 fmt.Printf("%v -> %[1]cn", bang) // 33 -> !
实际上 Go 提供了相应的字符字面量句法,可以直接使用单引号包裹单个字符,这样 Go 会自动推导出其类型为 rune
1
2
3
4
5pi1 := 'π' var pi1 = 'π' var pi1 rune = 'π'
实际输出时,类型会显示 int32
二、字符串
1 声明 string
默认情况下,Go 会把双引号包裹起来的字面值推断为 string
类型。
如下代码的作用是一样的:
1
2
3
4s = "Go" var s = "Go" var s string = "Go"
2 零值
字符串的零值是 ""
1
2var blank string
3 原始字符串字面量
若果你执行打印出 n
而不是打印新的一行,需要使用反引号 ``
1
2
3fmt.Println("hellonworld") fmt.Println(`hellonworld`)
如上代码谁打印出如下内容:
1
2
3
4hello world hellonworld
这种反引号的方式,可以让原始字符串字面量实现跨越多个文本行。
1
2
3
4
5fmt.Println(` hello world `)
这会输出
1
2
3
4hello world
使用场景,Windows 系统的文件路径就非常适合使用原始字符串字面量。
1
2
3path := `C:go` fmt.Println(path)
4 获取字符串中的字符
字符串可以使用字符在字符串中的索引来获取到这个字符,但是无法修改字符串。
1
2
3
4
5msg := "hello" c := msg[3] fmt.Printf("字符字面值是%c 代码点是%[1]vn",c) // 字符字面值是l 代码点是108
实现把小写字母转换为大写的程序
1
2
3
4
5
6c := 'g' c = c - 'a' + 'A' fmt.Printf("%v - %v + %vn", 'g', 'a', 'A') // 103 - 97 + 65 fmt.Printf("%c %[1]vn", c) // G 71
二、布尔值 bool
布尔值的取值返回只有 true
和 false
1
2
3
4
5
6t := true f := false fmt.Printf("%v %[1]Tn", t) // true bool fmt.Printf("%v %[1]Tn", f) // false bool
最后
以上就是有魅力玉米最近收集整理的关于go-09-基本数据类型-字符串和布尔值一、字符二、字符串二、布尔值 bool的全部内容,更多相关go-09-基本数据类型-字符串和布尔值一、字符二、字符串二、布尔值内容请搜索靠谱客的其他文章。
发表评论 取消回复