Golang学习笔记-数组

aside section ._1OhGeD · · 307 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

数组

Go数组声明需要指定元素类型以及元素个数,格式如下:

var variable_name [SIZE] variable_type
var values  [10] int

Go使用大括号初始化数组中的元素,如果元素没有指定初始值,默认为零值。

func main() {
    var values=[10] int{1,2,3,4}
    println(values[0])//1
    println(values[4])//0
}

如果数组有初始值,数组大小使用...代替,Go将会根据元素个数来设置数组大小。

func main() {
    var values=[...] int{1,2,3,4}
    println(len(values))//4
}

Go支持多维数组,格式如下:

var variable_name [SIZE1][SIZE2]...[SIZEN] variable_type

下面代码中的values是一个3行4列的二维数组,由3个长度为4的数组组成。

func main() {
    var values=[3][4] int{
        {0, 1, 2, 3} ,
        {4, 5, 6, 7} ,
        {8, 9, 10, 11},
    }
    println(values[1][2])//6
}

切片

Go 数组的长度不可改变,而切片的长度是不固定的,可以理解为动态数组,声明格式如下:

var identifier []type

切片默认值为nil,使用内置函数make创建切片,其中capacity为可选参数。

make([]type, length, capacity)

获取切片长度,容量:

func main() {
    var values=[] int{1,2,3,4}
    println(len(values))
    println(cap(values))
}

使用内置函数append追加数据并返回新的切片。

func main() {
    var values [] int
    values=append(values,1)
    values=append(values,2,3,4)
    values=append(values,[]int{5,6,7}...)
    println(len(values))
}

使用内置函数copy将一个切片的数据拷贝到另一个切片,拷贝的长度为这两个切片长度的最小值。

func main() {
    var values1=[] int{1,2,3,4}
    var values2=[] int{4,5}
    copy(values1,values2)
    fmt.Println(values1)//4,5,3,4

    values1=[] int{1,2,3,4}
    values2=[] int{4,5}
    copy(values2,values1)
    fmt.Println(values2)//1,2
}

可以通过设置下限及上限来截取切片 [lower-bound:upper-bound]。

func main() {
    var values=[...] int{0,1,2,3,4,5,6,7,8}
    //全部元素
    fmt.Println(values[:])//[0 1 2 3 4 5 6 7 8]
    //包含下限2,但不包含上限5
    fmt.Println(values[2:5])//[2 3 4]
    //默认下限为0
    fmt.Println(values[:2])//[0 1]
    //默认上限为len(values)
    fmt.Println(values[3:])//[3 4 5 6 7 8]
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:aside section ._1OhGeD

查看原文:Golang学习笔记-数组

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

307 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传