0
点赞
收藏
分享

微信扫一扫

Go语言的数组、切片和映射

使用数组

声明数组并给它赋值的程序清单如下:

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]

使用切片

切片类似于数组,但不同于数组的是,在切片中可以添加和删除元素,也可以复制切片中的元素。

在切片中添加元素的程序清单如下:

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 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]
举报

相关推荐

0 条评论