跟 for 语句 一样, if 语句条件表达式不需要括号包围,但花括号却不能省略。我们来看一个例子:
|
|
sqrt 函数计算平方根,并以字符串形式返回。如果对负数求根(第 9 行),将以虚数形式返回。
跟 for 语句 一样, if 语句条件表达式不需要括号包围,但花括号却不能省略。我们来看一个例子:
|
|
sqrt 函数计算平方根,并以字符串形式返回。如果对负数求根(第 9 行),将以虚数形式返回。
switch 语句也是一种经典控制语句,可以看做是 if-else 语句链的简写。
|
|
Go 语言 switch 结构跟 C 、 C++ 、 Java 、 JavaScript 以及 PHP 等类似,不同的是,Go 只执行匹配的 case 代码体,不包括下面的。
defer 语句将函数执行推迟到调用函数(包含函数)退出。函数调用参数还是立马求值,只是执行推迟而已。
|
|
对,就是这么简单!
Go 语言也有 指针( pointer ),指针用于保存一个值的内存地址。
类型 *T 就是类型 T 的指针类型。 指针的 零值( zero value )是: nil
。
|
|
操作符( operator ) &
用来取 被操作数( operand )的指针(内存地址):
|
|
Go 语言也有 结构体( struct )——由若干 字段( field )组成的集合。
|
|
这个例子定义了一个名为 Vertex 的结构体,用于表示一个顶点。 结构体包含两个字段 X 和 Y ,类型都是 int ,分别表示顶点的横坐标和纵坐标。
Go 也有 数组( array ), [n]T
就表示一个由 n 个类型 T
元素组成的数组类型。
下面这个表达式,申明了一个由 10 个整数组成的数组变量:
|
|
数组的长度是类型的一部分(长度不同意味着类型不同),所以数组没有办法调整尺寸。这看上去很有局限性;然而并不用太担心, Go 提供的方案也很方便。
数组 长度是固定的,而 切片( slice )是一个数组元素的弹性视图,长度可以是动态的。实际上,切片比数组更为常用。
类型 []T
就是一个由类型 T
元素组成的切片。
切片通过两个索引下标定义,一个表示 下边界( low bound ),一个表示 上边界( high bound ),以冒号( :
)分隔:
|
|
这表示一个 半开半闭 区间,包括第一个元素,但不包括最后一个。
以下表达式创建一个包含元素 1 到元素 3 的切片(不包括元素 4 ):
|
|
映射表( map )是一种将 键( key )映射到 值( value )的数据结构。
映射表的零值是 nil
。 一个 nil
映射表不包含任何键值数据,而且也不能添加新数据。
映射表同样可以通过 make 函数来创建并初始化:
|
|
Go 语言中的函数也是一种值,可以被传递,跟 C++ 函数对象、 Python 函数类似。
跟其他普通值一样,函数也可以作为 参数 传递或作为 返回值 返回。
|
|
Go 语言没有类的概念,但是你可以为某个类型定义 方法( method )。
方法 是一个带 接收者参数 的特殊函数。接收者参数位于 func 关键字与方法名之间,以括号包围。
下面这个例子中, Abs 方法有一个 Vertex 类型的接收者参数 v :
|
|