[Golang]也许有你不知道的,Array和Slice(1)

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


Golang中的array

    在golang中,array是同一类型的元素的有序排列,长度不能更改,占用内存上的一段连续空间。

    1)基础

    首先看看array的声明:
  1. var justiceArray [3]string  
 以上声明了justiceArray是为有3个元素的string数组,括号里面的数字是必须的,不能省略。
    另外说明一下,[3]string与[2]string是两种不同类型的array。
    现在对其赋值:
  1. justiceArray = [3]string{"Superman", "Batman", "Wonder Woman"}  
  2. fmt.Printf("The Justice League are: %v\n", justiceArray)  
  3. 输出:  
  4. The Justice League are: [Superman Batman Wonder Woman]  
    如果你只想创建一个填充默认值的数组,可以这样:
  1. justiceArray = [3]string{}  
  2. fmt.Printf("The Justice League are: %v\n", justiceArray)  
  3. 输出:  
  4. The Justice League are: [  ]  
    当前数组拥有3个空的字符串。
    另外你可以用一种省略形式:
  1. justiceArray = [...]string{"Superman", "Batman", "Wonder Woman"}  
  2. fmt.Printf("The Justice League are: %v\n", justiceArray)  
  3. 输出:  
  4. The Justice League are: [Superman Batman Wonder Woman]  
    用...代替数字,当然大括号里的元素需要跟你声明的数组长度一致。
    目的相同,下面这种声明赋值就更简洁了:

  1. avengersArray := [...]string{"Captain America", "Hulk"}  
  2. fmt.Printf("The Avengers are: %v\n", avengersArray)  
  3. 输出:  
  4. The Avengers are: [Captain America Hulk]  
  等号右边的返回类型是[2]string。

    2)数组的复制

    需要强调一点的是,array类型的变量指代整个数组变量(不同于c中的array,后者是一个指针,指向数组的第一元素);
  类似与int这些基本类型,当将array类型的变量赋值时,是复制整个数组,参照下面这个例子:

  1. newAvengers := avengersArray  
  2. newAvengers[0] = "Spider-Man"  
  3. fmt.Printf("The old avengers: %v\n", avengersArray)  
  4. fmt.Printf("The new avengers: %v\n", newAvengers)  
  5. 输出:  
  6. The old avengers: [Captain America Hulk]  
  7. The new avengers: [Spider-Man Hulk]  
    上面将avengersArray赋值给newAvengers时,是复制了整个数组,而不是单纯的指向。

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

本文来自:CSDN博客

感谢作者:abv123456789

查看原文:[Golang]也许有你不知道的,Array和Slice(1)

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

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