您的位置:首页 > 编程语言 > Go语言

35.笔记go语言——array、slices和map

2017-10-06 20:24 393 查看
35.笔记go语言——array、slices和map
可以利用array在列表中进行多个值的排序,或者使用更加灵活的:slice。字典或哈希类型同样可以使用,在Go中叫做map。

array

array由
<type>定义,n标示array的长度,而<type>标示希望存储的内容的类型。对array的元素赋值或索引是由方括号完成的.

当声明一个array时,你必须在方括号内输入些内容,数字或者三个点(...)。

package main

import "fmt"

func main() {

                                        a:= [2][2]int{{1, 2}, {3, 4}}

                                        fmt.Println(a)

}

输出:

                                        [[12] [3 4]]

slice

slice与array接近,但是在新的元素加入的时候可以增加长度。slice总是指向底层的一个array。slice是一个指向array的指针,这是其与array不同的地方;slice是引用类型,这意味着当赋值某个slice到另外一个变量,两个引用会指向同一个array。例如,如果一个函数需要一个slice参数,在其内对slice元素的修改也会体现在函数调用者中,这和传递底层的array指针类似。

slice与array接近,但是在新的元素加入的时候可以增加长度。slice总是指向底层的一个array。slice是一个指向array的指针,这是其与array不同的地方;slice是引用类型,这意味着当赋值某个slice到另外一个变量,两个引用会指向同一个array。例如,如果一个函数需要一个slice参数,在其内对slice元素的修改也会体现在函数调用者中,这和传递底层的array指针类似。

slice总是与一个固定长度的array成对出现。其影响slice的容量和长度。

如下代码会报错:

package main

func main() {

                                        vararray [100]int

                                        slice:= array[0:99]

                                        slice[98]= 'a'

                                        slice[99]= 'a'

}

slice[99] = 'a'这一行会报错//Error: "throw: index out of range"

如果想要扩展 slice,有一堆内建函数让你的日子更加好过一些: append和copy。函数 append 向 slice s 追加零值或其他 x 值,并且返回追加后的新的、与s有相同类型的slice。如果s没有足够的容量存储追加的值,append分配一个足够大的、新的slice来存放原有slice的元素和追加的值。因此,返回的slice可能指向不同的底层array。

map

许多语言都内建了类似的类型,例如Perl有哈希,Python有字典,而C++同样也有map(作为库)。在Go中有map类型。map可以认为是一个用字符串做索引的数组(在其最简单的形式下)。下面定义了map类型,用于将string转换为int。

一般定义map的方法是:map[<from type>]<to type>

monthdays := map[string]int{

"Jan": 31, "Feb": 28,"Mar": 31,

"Apr": 30, "May": 31,"Jun": 30,

"Jul": 31, "Aug": 31,"Sep": 30,

"Oct": 31, "Nov": 30,"Dec": 31,   }

逗号是必须的,当在 map 中索引(搜索)时,使用方括号。

当对 array、slice、string 或者 map 循环遍历的时候,range 会帮助你,每次调用,它都会返回一个键和对应的值。

 

 

 

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: