Skip to content

Commit 1bb0dea

Browse files
committed
Add syntax highlighting
1 parent ad37816 commit 1bb0dea

File tree

2 files changed

+88
-31
lines changed

2 files changed

+88
-31
lines changed

zh/02.2.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,25 @@ Go语言里面定义变量有多种方式。
88

99
使用`var`关键字是Go最基本的定义变量方式,与C语言不同的是Go把变量类型放在变量名后面:
1010
```Go
11+
1112
//定义一个名称为“variableName”,类型为"type"的变量
1213
var variableName type
1314
```
1415
定义多个变量
1516
```Go
17+
1618
//定义三个类型都是“type”的变量
1719
var vname1, vname2, vname3 type
1820
```
1921
定义变量并初始化值
2022
```Go
23+
2124
//初始化“variableName”的变量为“value”值,类型是“type”
2225
var variableName type = value
2326
```
2427
同时初始化多个变量
2528
```Go
29+
2630
/*
2731
定义三个类型都是"type"的变量,并且分别初始化为相应的值
2832
vname1为v1,vname2为v2,vname3为v3
@@ -31,6 +35,7 @@ Go语言里面定义变量有多种方式。
3135
```
3236
你是不是觉得上面这样的定义有点繁琐?没关系,因为Go语言的设计者也发现了,有一种写法可以让它变得简单一点。我们可以直接忽略类型声明,那么上面的代码变成这样了:
3337
```Go
38+
3439
/*
3540
定义三个变量,它们分别初始化为相应的值
3641
vname1为v1,vname2为v2,vname3为v3
@@ -40,6 +45,7 @@ Go语言里面定义变量有多种方式。
4045
```
4146
你觉得上面的还是有些繁琐?好吧,我也觉得。让我们继续简化:
4247
```Go
48+
4349
/*
4450
定义三个变量,它们分别初始化为相应的值
4551
vname1为v1,vname2为v2,vname3为v3
@@ -55,6 +61,7 @@ Go语言里面定义变量有多种方式。
5561

5662
Go对于已声明但未使用的变量会在编译阶段报错,比如下面的代码就会产生一个错误:声明了`i`但未使用。
5763
```Go
64+
5865
package main
5966

6067
func main() {
@@ -67,12 +74,14 @@ Go对于已声明但未使用的变量会在编译阶段报错,比如下面的
6774

6875
它的语法如下:
6976
```Go
77+
7078
const constantName = value
7179
//如果需要,也可以明确指定常量的类型:
7280
const Pi float32 = 3.1415926
7381
```
7482
下面是一些常量声明的例子:
7583
```Go
84+
7685
const Pi = 3.1415926
7786
const i = 10000
7887
const MaxThread = 10
@@ -87,6 +96,7 @@ Go 常量和一般程序语言不同的是,可以指定相当多的小数位
8796

8897
在Go中,布尔值的类型为`bool`,值是`true``false`,默认为`false`
8998
```Go
99+
90100
//示例代码
91101
var isActive bool // 全局变量声明
92102
var enabled, disabled = true, false // 忽略类型的声明
@@ -117,6 +127,7 @@ Go 常量和一般程序语言不同的是,可以指定相当多的小数位
117127

118128
这就是全部吗?No!Go还支持复数。它的默认类型是`complex128`(64位实数+64位虚数)。如果需要小一些的,也有`complex64`(32位实数+32位虚数)。复数的形式为`RE + IMi`,其中`RE`是实数部分,`IM`是虚数部分,而最后的`i`是虚数单位。下面是一个使用复数的例子:
119129
```Go
130+
120131
var c complex64 = 5+5i
121132
//output: (5+5i)
122133
fmt.Printf("Value is: %v", c)
@@ -126,6 +137,7 @@ Go 常量和一般程序语言不同的是,可以指定相当多的小数位
126137

127138
我们在上一节中讲过,Go中的字符串都是采用`UTF-8`字符集编码。字符串是用一对双引号(`""`)或反引号(`` ` `` `` ` ``)括起来定义,它的类型是`string`
128139
```Go
140+
129141
//示例代码
130142
var frenchHello string // 声明变量为字符串的一般方法
131143
var emptyString string = "" // 声明了一个字符串变量,初始化为空字符串
@@ -137,12 +149,14 @@ Go 常量和一般程序语言不同的是,可以指定相当多的小数位
137149
```
138150
在Go中字符串是不可变的,例如下面的代码编译时会报错:cannot assign to s[0]
139151
```Go
152+
140153
var s string = "hello"
141154
s[0] = 'c'
142155

143156
```
144157
但如果真的想要修改怎么办呢?下面的代码可以实现:
145158
```Go
159+
146160
s := "hello"
147161
c := []byte(s) // 将字符串 s 转换为 []byte 类型
148162
c[0] = 'c'
@@ -152,13 +166,15 @@ Go 常量和一般程序语言不同的是,可以指定相当多的小数位
152166

153167
Go中可以使用`+`操作符来连接两个字符串:
154168
```Go
169+
155170
s := "hello,"
156171
m := " world"
157172
a := s + m
158173
fmt.Printf("%s\n", a)
159174
```
160175
修改字符串也可写为:
161176
```Go
177+
162178
s := "hello"
163179
s = "c" + s[1:] // 字符串虽不能更改,但可进行切片操作
164180
fmt.Printf("%s\n", s)
@@ -176,6 +192,7 @@ Go中可以使用`+`操作符来连接两个字符串:
176192
### 错误类型
177193
Go内置有一个`error`类型,专门用来处理错误信息,Go的`package`里面还专门有一个包`errors`来处理错误:
178194
```Go
195+
179196
err := errors.New("emit macho dwarf: elf header corrupted")
180197
if err != nil {
181198
fmt.Print(err)
@@ -197,6 +214,7 @@ Go内置有一个`error`类型,专门用来处理错误信息,Go的`package`
197214

198215
例如下面的代码:
199216
```Go
217+
200218
import "fmt"
201219
import "os"
202220

@@ -210,6 +228,7 @@ Go内置有一个`error`类型,专门用来处理错误信息,Go的`package`
210228
```
211229
可以分组写成如下形式:
212230
```Go
231+
213232
import(
214233
"fmt"
215234
"os"
@@ -265,10 +284,12 @@ Go之所以会那么简洁,是因为它有一些默认的行为:
265284
### array
266285
`array`就是数组,它的定义方式如下:
267286
```Go
287+
268288
var arr [n]type
269289
```
270290
`[n]type`中,`n`表示数组的长度,`type`表示存储元素的类型。对数组的操作和其它语言类似,都是通过`[]`来进行读取或赋值:
271291
```Go
292+
272293
var arr [10]int // 声明了一个int类型的数组
273294
arr[0] = 42 // 数组下标是从0开始的
274295
arr[1] = 13 // 赋值操作
@@ -319,6 +340,7 @@ Go之所以会那么简洁,是因为它有一些默认的行为:
319340
```
320341
`slice`可以从一个数组或一个已经存在的`slice`中再次声明。`slice`通过`array[i:j]`来获取,其中`i`是数组的开始位置,`j`是结束位置,但不包含`array[j]`,它的长度是`j-i`
321342
```Go
343+
322344
// 声明一个含有10个元素元素类型为byte的数组
323345
var ar = [10]byte {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'}
324346

@@ -425,6 +447,7 @@ slice有一些简便的操作
425447

426448
fmt.Println("第三个数字是: ", numbers["three"]) // 读取数据
427449
// 打印出来如:第三个数字是: 3
450+
```
428451

429452
这个`map`就像我们平常看到的表格一样,左边列是`key`,右边列是值
430453

@@ -438,6 +461,7 @@ slice有一些简便的操作
438461
`map`的初始化可以通过`key:val`的方式初始化值,同时`map`内置有判断是否存在`key`的方式
439462

440463
通过`delete`删除`map`的元素:
464+
441465
```Go
442466

443467
// 初始化一个字典

0 commit comments

Comments
 (0)