11# 基本类型
22
3- ## 数值类型
3+ # 数值类型
44
55整数类型有无符号和带符号两种。Go 同时支持` int ` 和` uint ` ,这两种类型的长度相同,但具体长度取决于不同编译器的实现。Go 里面也有直接定义好位数的类型:` rune ` , ` int8 ` , ` int16 ` , ` int32 ` , ` int64 ` 和` byte ` , ` uint8 ` , ` uint16 ` , ` uint32 ` , ` uint64 ` 。其中` rune ` 是` int32 ` 的别称,` byte ` 是` uint8 ` 的别称。
66
7- > 需要注意的一点是,这些类型的变量之间不允许互相赋值或操作,不然会在编译时引起编译器报错。
8- >
9- > 如下的代码会产生错误:invalid operation: a + b (mismatched types int8 and int32)
10- >
11- > > var a int8
12- > >
13- > > var b int32
14- > >
15- > > c:=a + b
16- >
17- > 另外,尽管 int 的长度是 32 bit, 但 int 与 int32 并不可以互用。
7+ 需要注意的一点是,这些类型的变量之间不允许互相赋值或操作,不然会在编译时引起编译器报错。如下的代码会产生错误:` invalid operation: a + b (mismatched types int8 and int32) `
188
19- 浮点数的类型有` float32 ` 和` float64 ` 两种(没有` float ` 类型),默认是` float64 ` 。
9+ ``` go
10+ var a int8
11+ var b int32
12+ c := a + b
13+ ```
14+
15+ 另外,尽管 int 的长度是 32 bit, 但 int 与 int32 并不可以互用。浮点数的类型有` float32 ` 和` float64 ` 两种(没有` float ` 类型),默认是` float64 ` 。
2016
2117这就是全部吗?No!Go 还支持复数。它的默认类型是` complex128 ` (64 位实数+64 位虚数)。如果需要小一些的,也有` complex64 ` (32 位实数+32 位虚数)。复数的形式为` RE + IMi ` ,其中` RE ` 是实数部分,` IM ` 是虚数部分,而最后的` i ` 是虚数单位。下面是一个使用复数的例子:
2218
@@ -26,7 +22,7 @@ var c complex64 = 5+5i
2622fmt.Printf("Value is: %v", c)
2723```
2824
29- ## 布尔类型
25+ # 布尔类型
3026
3127在 Go 中,布尔值的类型为` bool ` ,值是` true ` 或` false ` ,默认为` false ` 。
3228
@@ -40,66 +36,3 @@ func test() {
4036 available = true // 赋值操作
4137}
4238```
43-
44- # String
45-
46- 我们在上一节中讲过,Go 中的字符串都是采用` UTF-8 ` 字符集编码。字符串是用一对双引号(` "" ` )或反引号(`` ` `` ` )括起来定义,它的类型是 ` string`。
47-
48- ```
49- //示例代码
50- var frenchHello string // 声明变量为字符串的一般方法
51- var emptyString string = "" // 声明了一个字符串变量,初始化为空字符串
52- func test() {
53- no, yes, maybe := "no", "yes", "maybe" // 简短声明,同时声明多个变量
54- japaneseHello := "Konichiwa" // 同上
55- frenchHello = "Bonjour" // 常规赋值
56- }
57- ```
58-
59- 在 Go 中字符串是不可变的,例如下面的代码编译时会报错:cannot assign to s[ 0]
60-
61- ```
62- var s string = "hello"
63- s[0] = 'c'
64- ```
65-
66- 但如果真的想要修改怎么办呢?下面的代码可以实现:
67-
68- ```
69- s := "hello"
70- c := []byte(s) // 将字符串 s 转换为 []byte 类型
71- c[0] = 'c'
72- s2 := string(c) // 再转换回 string 类型
73- fmt.Printf("%s\n", s2)
74- ```
75-
76- Go 中可以使用` + ` 操作符来连接两个字符串:
77-
78- ```
79- s := "hello,"
80- m := " world"
81- a := s + m
82- fmt.Printf("%s\n", a)
83- ```
84-
85- 修改字符串也可写为:
86-
87- ``` go
88- s := " hello"
89- s = " c" + s[1 :] // 字符串虽不能更改,但可进行切片操作
90- fmt.Printf (" %s \n " , s)
91- ```
92-
93- 如果要声明一个多行的字符串怎么办?可以通过`` `来声明:
94-
95- ```
96- m := `hello
97- world`
98- ```
99-
100- `` ` 括起的字符串为 Raw 字符串,即字符串在代码中的形式就是打印时的形式,它没有字符转义,换行也将原样输出。例如本例中会输出:
101-
102- ```
103- hello
104- world
105- ```
0 commit comments