数组与切片-GOLANG

golang  @amazeUI  2017-08-02 14:19:14

a := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} //初始化一个数组

    b := a[5:10]                                //从a切片

    fmt.Println(a)

    fmt.Println(b)

    c := make([]int, 1, 10)        //第一个参数为类型,切片。第二参数为默认元素个数。第三个参数为最大容量,可以不设置默认为默认元素个数

    d := a[7:8]                    //从a中切片

    fmt.Println(d, len(d), cap(d)) //*l-1

    fmt.Println(len(c), cap(c), reflect.TypeOf(c))

    fmt.Println("在这里换行,下面做append和切片重新分配容量实验*l-2")

    fmt.Printf("%p\n", c)

    fmt.Println(len(c), cap(c))

    c = append(c, 1, 2, 3, 4, 5, 6, 7, 8, 9)

    fmt.Printf("%p\n", c)

    fmt.Println(len(c), cap(c))

    c = append(c, 10)

    fmt.Printf("%p\n", c)

    fmt.Println(len(c), cap(c))

    fmt.Println("在这里换行,下面做切片为底层数组实验*l-3")

    e := []int{10, 20, 30, 40, 50, 60}

    se1 := e[2:6]

    se2 := e[1:3]

    fmt.Println(se1)

    fmt.Println(se2) //在这里se1与se2都拥有30这个值,那么如果更改30这个值,e,se1,se2会有什么变化?

    se1[0] = 300

    fmt.Println(e, se1, se2)

    fmt.Println("在这里换行,下面做切片为底层数组实验*l-4")

    e1 := []int{10, 20, 30, 40, 50, 60}

    se3 := e1[2:6]

    se4 := e1[1:3]

    se4 = append(se4, 1, 2, 3, 4)

    se3[0] = 100

    fmt.Println(e1, se3, se4) //在这里可以看到更改se3的值,并没有影响到se4

    fmt.Println("在这里换行,下面做copy实验*l-5")

    f := []int{1, 2, 3}

    g := []int{4, 5, 6, 7, 8}

    copy(f, g)

    fmt.Println(f) //在这里可以看到f变成三个元素了

//切片

//b等于a的第四个元素到最后一个元素。这是取数组的一部分出来,也可以写作a[5:],a[5:len(a)]

//取前五个元素[:5]。具体可以看做后一个数减去前一个数等于取出个数,前一个数为索引开始

//切片可作为一个变长数组来看,分配了最大容量,当实际元素大于最大容量时,最大容量会翻倍,也就是重新分配内存地址,并重新拷贝数据

//重新分配内存地址是较为占用资源的

//*l-1,reslice从切片中再切片,可以看到d虽然只有一个元素,但是容量却是2,从切片中获取的切片

//*l-2,d的最小索引为7,7取出来的数是8,最大容量应该从a的索引7到9,也就是7,8,9三个索引,最大容量应该为3

//如果d:[:5],那么会取出a的从0到4的元素作为d切片,而d的最小索引为0,最大容量应该从a的索引0到9,总共10

//有学到printf的一个用法了printf("%p",变量)打印变量的内存地址,"%v"为值,双引号内可以加换行符\n

//c可以看到,第一次添加9个元素到c里面,内存地址是一样的,现在c已经是10个元素等于最大容量,如果再添加一个元素,容量就会变成20,同时内存地址也发生了改变

//*l-3,在这里可以看到,更改一个切片中的值,会将原始数组的值和其他切片有同样键的值都改变,意味着slice是指向的底层的一个数组,可以简单的理解为引用赋值

//*1-4,当一个切片的容量发生改变并随着append扩大时,se4的内存地址发生了改变,所以se3的改变只会影响到e1并没有影响到se4

//*1-5,当发生copy行为时,会以长度最短的数组为准,copy的两个参数也可以只截取f的一部分和g的一部分发生copy,比如f[0:1],g[4:5],最后打印出来的结果就为823

//在这里数组的个数不能明确的声明,比如f的中括号内不能有指定长度或者...g数组同理,copy只适用于切片,所以可以得出如果申明了长度的类型则为数组,未声明长度的类型则为切片

最后打印出来的结果:

[1 2 3 4 5 6 7 8 9 10]

[6 7 8 9 10]

[8] 1 3

1 10 []int

在这里换行,下面做append和切片重新分配容量实验*l-2

0xc04207e0a0

1 10

0xc04207e0a0

10 10

0xc042086000

11 20

在这里换行,下面做切片为底层数组实验*l-3

[30 40 50 60]

[20 30]

[10 20 300 40 50 60] [300 40 50 60] [20 300]

在这里换行,下面做切片为底层数组实验*l-4

[10 20 100 40 50 60] [100 40 50 60] [20 30 1 2 3 4]

在这里换行,下面做copy实验*l-5

[4 5 6]

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容

  • 出处---Go编程语言 欢迎来到 Go 编程语言指南。本指南涵盖了该语言的大部分重要特性 Go 语言的交互式简介,...
    Tuberose阅读 18,396评论 1 46
  • fmt格式化字符串 格式:%[旗标][宽度][.精度][arg索引]动词旗标有以下几种:+: 对于数值类型总是输出...
    皮皮v阅读 1,087评论 0 3
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,714评论 0 38
  • 1.安装 https://studygolang.com/dl 2.使用vscode编辑器安装go插件 3.go语...
    go含羞草阅读 1,538评论 0 6
  • 2018年4月1日 星期天 晴 今天学校组织集体活动去青云山玩了,儿子很开心,一早就起来收拾,我们还去超市买了...
    左手繁花阅读 73评论 0 0