Golang learning 数组 切片(slice)

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

数组 切片(slice)
数组是值类型,切片是引用类型,虽然很像,但是本质不同。使用时注意不要用错

var a [2]int                         数组初始化没有赋值,打印结果 [] 空值,不为nil
fmt.Print(a)


a := [2]int{1,2}                    数组初始化赋值
fmt.Print(a)
a := [2]int{1,2}                   数组初始化赋值,指定数组个数
fmt.Print(a)

a := [4]int{1,2:3}                  数组指定下标位置初始化,未指定下标值默认0(type []int),打印结果[1 0 3]
fmt.Print(a)

a := [...]int{1,2}                 编译器会按照数量确定数组长度
fmt.Print(len(a))

type Person struct {         struct 类
    name string
    age   int
}
a := [...]Person{                初始化Person类型数组,对于多维度数组只允许第一维度[...]
    {"w",12},
    {"y", 16},
}
fmt.Print(a)


数组判断  == 
a := [...]Person{
        {"w",12},
        {"y", 16},
    }

    b := [...]Person{
        {"w",12},
        {"y", 16},
    }

    fmt.Print(a == b)             打印true
    print("\n",&a,"\n",&b)       打印0xc00007aee8    0xc00007aeb8  地址不同

    c := [2]int{1,2}
    d := [2]int{1,2}
    fmt.Print(c == d)             打印true
    print("\n",&c,"\n",&d)        打印0xc00007ae68    0xc00007ae58  地址不同
                                                 == 可判定数据一致性,地址不同无法用于判定对象是否是同一个

切片


var a []int                         切片初始化没有赋值,打印结果 [] 空值,为nil,地址0x0
fmt.Print(a)


a := []int{1,2}                    切片的初始化赋值不等于nil ,分配了内存
fmt.Print(a)

a := make([]int,0,5)           切片的初始化赋值不等于nil,分配了内存, 0 大小, 5 长度
fmt.Print(a)

a := [][]int{                        如果元素类也是切片,那就可以实现类似交错数组的功能
        {1,2},
        {10,20,30},
        {100},
    }
 a[2] = append(a[2],200,300)
 fmt.Print(a)
 fmt.Print(a[:1])                 从头到指定索引

a := make([]int,0,5)        向切片末尾添加元素,添加元素超过5个会重新分配内存
append(b,2)


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

本文来自:简书

感谢作者:wangyongyue

查看原文:Golang learning 数组 切片(slice)

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

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