Skip to main content

首页

Golang快速指南

基本数据类型

数值类型 说明
bool 布尔
string 字符
int,int8,int16,int32,int64 int长度与平台相关
uint,uint8,uint16,uint32,uint64 uint长度与平台相关
uintptr 同指针,32位平台为4字节,64位八字节
byte 等价于uint8
rune 等价于uint32,单个unicode字符
float32,float64
complex64,complex128 复数类型, value = 3.2+12i

map

在其他编程语言中也称为字典(Python)、hash 和 HashTable 等

var mapname map[keytype]valuetype

var intSet = map[int]int {1:1, 2:2}
intSet[3] = 3

val, ok := intSet[5]  // val=0, ok=false

var stringSet = map[string]int {"one":1, "two":2}
stringSet['three'] = 3

三个点的用法

在Golang中,三个点一共会用在四个地方

变长的函数参数

如果最后一个函数参数的类型的是…T,那么在调用这个函数的时候,我们可以在参数列表的最后使用若干个类型为T的参数。 这里,…T在函数内部的类型实际是[]T.

func Sum(nums ...int) int {
    res := 0
    for _, n := range nums {
        res += n
    }
    return res
}

Sum(1,2,3)

调用拥有变长参数列表的函数

上面调用Sum函数时,是将变长参数分开写的。如果我们有一个slice,那么我们调用时不必将slice拆开再调用,直接在slice后跟…即可:


primes := []int{2, 3, 5, 7}
fmt.Println(Sum(primes...)) // 17

标识数组元素个数

这里,…意味着数组的元素个数:

stooges := [...]string{"Moe", "Larry", "Curly"} // len(stooges) == 3

Go命令行中的通配符

描述包文件的通配符。 在这个例子中,会单元测试当前目录和所有子目录的所有包:

go test ./...

参考: 3 dots in 4 places

go语言的数组和(Slices)切片区别

  • 数组:类型 [n]T 表示拥有 n 个 T 类型的值的数组。
  • 切片:类型 []T 表示一个元素类型为 T 的切片。

数组是值类型,换句话说,如果你将一个数组赋值给另外一个数组,那么,实际上就是将整个数组拷贝一份。将数组作为参数传递给函数,实际 传递的是一份数组的拷贝。