@@ -8,21 +8,25 @@ Go语言里面定义变量有多种方式。
8
8
9
9
使用` var ` 关键字是Go最基本的定义变量方式,与C语言不同的是Go把变量类型放在变量名后面:
10
10
``` Go
11
+
11
12
// 定义一个名称为“variableName”,类型为"type"的变量
12
13
var variableName type
13
14
```
14
15
定义多个变量
15
16
``` Go
17
+
16
18
// 定义三个类型都是“type”的变量
17
19
var vname1 , vname2 , vname3 type
18
20
```
19
21
定义变量并初始化值
20
22
``` Go
23
+
21
24
// 初始化“variableName”的变量为“value”值,类型是“type”
22
25
var variableName type = value
23
26
```
24
27
同时初始化多个变量
25
28
``` Go
29
+
26
30
/*
27
31
定义三个类型都是"type"的变量,并且分别初始化为相应的值
28
32
vname1为v1,vname2为v2,vname3为v3
@@ -31,6 +35,7 @@ Go语言里面定义变量有多种方式。
31
35
```
32
36
你是不是觉得上面这样的定义有点繁琐?没关系,因为Go语言的设计者也发现了,有一种写法可以让它变得简单一点。我们可以直接忽略类型声明,那么上面的代码变成这样了:
33
37
``` Go
38
+
34
39
/*
35
40
定义三个变量,它们分别初始化为相应的值
36
41
vname1为v1,vname2为v2,vname3为v3
@@ -40,6 +45,7 @@ Go语言里面定义变量有多种方式。
40
45
```
41
46
你觉得上面的还是有些繁琐?好吧,我也觉得。让我们继续简化:
42
47
``` Go
48
+
43
49
/*
44
50
定义三个变量,它们分别初始化为相应的值
45
51
vname1为v1,vname2为v2,vname3为v3
@@ -55,6 +61,7 @@ Go语言里面定义变量有多种方式。
55
61
56
62
Go对于已声明但未使用的变量会在编译阶段报错,比如下面的代码就会产生一个错误:声明了` i ` 但未使用。
57
63
``` Go
64
+
58
65
package main
59
66
60
67
func main () {
@@ -67,12 +74,14 @@ Go对于已声明但未使用的变量会在编译阶段报错,比如下面的
67
74
68
75
它的语法如下:
69
76
``` Go
77
+
70
78
const constantName = value
71
79
// 如果需要,也可以明确指定常量的类型:
72
80
const Pi float32 = 3.1415926
73
81
```
74
82
下面是一些常量声明的例子:
75
83
``` Go
84
+
76
85
const Pi = 3.1415926
77
86
const i = 10000
78
87
const MaxThread = 10
@@ -87,6 +96,7 @@ Go 常量和一般程序语言不同的是,可以指定相当多的小数位
87
96
88
97
在Go中,布尔值的类型为` bool ` ,值是` true ` 或` false ` ,默认为` false ` 。
89
98
``` Go
99
+
90
100
// 示例代码
91
101
var isActive bool // 全局变量声明
92
102
var enabled , disabled = true , false // 忽略类型的声明
@@ -117,6 +127,7 @@ Go 常量和一般程序语言不同的是,可以指定相当多的小数位
117
127
118
128
这就是全部吗?No!Go还支持复数。它的默认类型是` complex128 ` (64位实数+64位虚数)。如果需要小一些的,也有` complex64 ` (32位实数+32位虚数)。复数的形式为` RE + IMi ` ,其中` RE ` 是实数部分,` IM ` 是虚数部分,而最后的` i ` 是虚数单位。下面是一个使用复数的例子:
119
129
``` Go
130
+
120
131
var c complex64 = 5 +5i
121
132
// output: (5+5i)
122
133
fmt.Printf (" Value is: %v " , c)
@@ -126,6 +137,7 @@ Go 常量和一般程序语言不同的是,可以指定相当多的小数位
126
137
127
138
我们在上一节中讲过,Go中的字符串都是采用` UTF-8 ` 字符集编码。字符串是用一对双引号(` "" ` )或反引号(`` ` `` `` ` `` )括起来定义,它的类型是` string ` 。
128
139
``` Go
140
+
129
141
// 示例代码
130
142
var frenchHello string // 声明变量为字符串的一般方法
131
143
var emptyString string = " " // 声明了一个字符串变量,初始化为空字符串
@@ -137,12 +149,14 @@ Go 常量和一般程序语言不同的是,可以指定相当多的小数位
137
149
```
138
150
在Go中字符串是不可变的,例如下面的代码编译时会报错:cannot assign to s[ 0]
139
151
``` Go
152
+
140
153
var s string = " hello"
141
154
s[0 ] = ' c'
142
155
143
156
```
144
157
但如果真的想要修改怎么办呢?下面的代码可以实现:
145
158
``` Go
159
+
146
160
s := " hello"
147
161
c := []byte (s) // 将字符串 s 转换为 []byte 类型
148
162
c[0 ] = ' c'
@@ -152,13 +166,15 @@ Go 常量和一般程序语言不同的是,可以指定相当多的小数位
152
166
153
167
Go中可以使用` + ` 操作符来连接两个字符串:
154
168
``` Go
169
+
155
170
s := " hello,"
156
171
m := " world"
157
172
a := s + m
158
173
fmt.Printf (" %s \n " , a)
159
174
```
160
175
修改字符串也可写为:
161
176
``` Go
177
+
162
178
s := " hello"
163
179
s = " c" + s[1 :] // 字符串虽不能更改,但可进行切片操作
164
180
fmt.Printf (" %s \n " , s)
@@ -176,6 +192,7 @@ Go中可以使用`+`操作符来连接两个字符串:
176
192
### 错误类型
177
193
Go内置有一个` error ` 类型,专门用来处理错误信息,Go的` package ` 里面还专门有一个包` errors ` 来处理错误:
178
194
``` Go
195
+
179
196
err := errors.New (" emit macho dwarf: elf header corrupted" )
180
197
if err != nil {
181
198
fmt.Print (err)
@@ -197,6 +214,7 @@ Go内置有一个`error`类型,专门用来处理错误信息,Go的`package`
197
214
198
215
例如下面的代码:
199
216
``` Go
217
+
200
218
import " fmt"
201
219
import " os"
202
220
@@ -210,6 +228,7 @@ Go内置有一个`error`类型,专门用来处理错误信息,Go的`package`
210
228
```
211
229
可以分组写成如下形式:
212
230
``` Go
231
+
213
232
import (
214
233
" fmt"
215
234
" os"
@@ -265,10 +284,12 @@ Go之所以会那么简洁,是因为它有一些默认的行为:
265
284
### array
266
285
` array ` 就是数组,它的定义方式如下:
267
286
``` Go
287
+
268
288
var arr [n]type
269
289
```
270
290
在` [n]type ` 中,` n ` 表示数组的长度,` type ` 表示存储元素的类型。对数组的操作和其它语言类似,都是通过` [] ` 来进行读取或赋值:
271
291
``` Go
292
+
272
293
var arr [10 ]int // 声明了一个int类型的数组
273
294
arr[0 ] = 42 // 数组下标是从0开始的
274
295
arr[1 ] = 13 // 赋值操作
@@ -319,6 +340,7 @@ Go之所以会那么简洁,是因为它有一些默认的行为:
319
340
```
320
341
` slice ` 可以从一个数组或一个已经存在的` slice ` 中再次声明。` slice ` 通过` array[i:j] ` 来获取,其中` i ` 是数组的开始位置,` j ` 是结束位置,但不包含` array[j] ` ,它的长度是` j-i ` 。
321
342
``` Go
343
+
322
344
// 声明一个含有10个元素元素类型为byte的数组
323
345
var ar = [10 ]byte {' a' , ' b' , ' c' , ' d' , ' e' , ' f' , ' g' , ' h' , ' i' , ' j' }
324
346
@@ -425,6 +447,7 @@ slice有一些简便的操作
425
447
426
448
fmt.Println (" 第三个数字是: " , numbers[" three" ]) // 读取数据
427
449
// 打印出来如:第三个数字是: 3
450
+ ```
428
451
429
452
这个` map ` 就像我们平常看到的表格一样,左边列是` key ` ,右边列是值
430
453
@@ -438,6 +461,7 @@ slice有一些简便的操作
438
461
` map ` 的初始化可以通过` key:val ` 的方式初始化值,同时` map ` 内置有判断是否存在` key ` 的方式
439
462
440
463
通过` delete ` 删除` map ` 的元素:
464
+
441
465
``` Go
442
466
443
467
// 初始化一个字典
0 commit comments