使用数组(array)
声明数组并给它赋值的程序清单如下:
package main
import(
"fmt"
)
func main(){
var cheeses [2]string
cheeses[0]="Mariolles"
cheeses[1]="Époisses de Bourgogne"
fmt.Println(cheeses[0])
fmt.Println(cheeses[1])
fmt.Println(cheeses)
}
运行结果如下:
Mariolles Époisses de Bourgogne [Mariolles Époisses de Bourgogne]
使用切片(slice)
切片类似于数组,但不同于数组的是,在切片中可以添加和删除元素,也可以复制切片中的元素。
在切片中添加元素的程序清单如下:
package main
import(
"fmt"
)
func main(){
var cheeses = make([]string,2)
cheeses[0]="Mariolles"
cheeses[1]="Époisses de Bourgogne"
cheeses=append(cheeses,"Camembert")
fmt.Println(cheeses[2])
}
Go语言提供了内置函数append,能增大切片的长度。
运行结果如下:
Camembert
在切片中末尾添加多个元素的程序清单如下:
package main
import(
"fmt"
)
func main(){
var cheeses = make([]string,2)
cheeses[0]="Mariolles"
cheeses[1]="Époisses de Bourgogne"
cheeses=append(cheeses,"Camembert","Reblochon","Picodon")
fmt.Println(cheeses)
}
运行结果如下:
[Mariolles Époisses de Bourgogne Camembert Reblochon Picodon]
在切片中删除元素的程序清单如下:(有bug,没明白。)
package main
import(
"fmt"
)
func main(){
var cheeses = make([]string,2)
cheeses[0]="Mariolles"
cheeses[1]="Époisses de Bourgogne"
cheeses[2]="Camembert"
fmt.Println(len(cheeses))
fmt.Println(cheeses)
cheeses=append(cheeses[:2],cheeses[2+1:]...)
fmt.Println(len(cheeses))
fmt.Println(cheeses)
}
要从切片中删除元素,也可使用内置函数append。
运行结果如下:
panic: runtime error: index out of range [2] with length 2 goroutine 1 [running]: main.main() /Users/douxiaobo/go/src/main/main.go:10 +0x70 exit status 2
复制切片中的元素的程序清单如下:
package main
import(
"fmt"
)
func main(){
var cheeses = make([]string,2)
cheeses[0]="Mariolles"
cheeses[1]="Époisses de Bourgogne"
var smellyCheeses=make([]string,2)
copy(smellyCheeses,cheeses)
fmt.Println(smellyCheeses)
}
要复制切片的全部或部分元素,可使用内置函数copy。在复制切片中的元素前,必须再声明一个类型与该切片相同的切片。
运行结果如下:
[Mariolles Époisses de Bourgogne]
截取子切片的代码如下:
package main
import(
"fmt"
)
func main(){
var ary []int
ary=make([]int,3)
ary[0]=2
ary[1]=4
ary[2]=8
fmt.Println(ary)
var subAry []int
subAry=ary[1:3]
fmt.Println(subAry)
}
运行结果如下:
[2 4 8] [4 8]
使用映射(map)
数组和切片是可通过索引值访问的元素集合,而映射是通过键来访问的无序元素编组。
简单地说,映射可视为键-值对集合。
映射的代码如下:
package main
import(
"fmt"
)
func main(){
var map1 map[string]string
map1=make(map[string]string,3)
map1["Name"]="张三"
map1["Gender"]="男"
fmt.Println(map1)
map2:=make(map[int]string,3)
map2[1]="李四"
map2[5]="女"
fmt.Println(map2)
}
运行结果如下:
map[Gender:男 Name:张三] map[1:李四 5:女]
在映射中添加元素的程序清单如下:
package main
import(
"fmt"
)
func main(){
var players=make(map[string]int)
players["cook"]=32
players["bairstow"]=27
players["stokes"]=26
fmt.Println(players["cook"])
fmt.Println(players["bairstow"])
}
运行结果如下:
32 27
从映射中删除元素的程序清单如下:
package main
import(
"fmt"
)
func main(){
var players=make(map[string]int)
players["cook"]=32
players["bairstow"]=27
players["stokes"]=26
delete(players,"cook")
fmt.Println(players)
}
要从映射中删除元素,可使用内置函数delete。
运行结果如下:
map[bairstow:27 stokes:26]



