栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

使用数组(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]

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/716757.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号