数组与切片

whispermemory · 2013-04-13 09:09:16 · 14392 次点击
package main

import "fmt"

func main() {
    a := [...]int{3: 3}
    fmt.Println(a)
    b := append(a[:], 4, 5, 6)
    fmt.Println(b, len(b), cap(b))
    change1(b)
    fmt.Println(b, len(b), cap(b))
    b = change2(b)
    fmt.Println(b, len(b), cap(b))
}

func change1(s []int) {
    s = append(s, []int{7, 8, 9, 10}...)
    fmt.Println("func change1:", s, len(s), cap(s))
}

func change2(s []int) []int {
    s = append(s, []int{7, 8, 9, 10}...)
    fmt.Println("func change2:", s, len(s), cap(s))
    return s
}

输出:

  • [0 0 0 3]
  • [0 0 0 3 4 5 6] 7 8
  • func change1: [0 0 0 3 4 5 6 7 8 9 10] 11 16
  • [0 0 0 3 4 5 6] 7 8
  • func change2: [0 0 0 3 4 5 6 7 8 9 10] 11 16
  • [0 0 0 3 4 5 6 7 8 9 10] 11 16
#5
更多评论
polaris
社区,需要你我一同完善!

有几个错误:

> 数组的创建使用 = []type{}创建

这种方式创建的是切片,创建数组必须指定长度,即[3]type{}这样的。

> 切片创建有两种

通过上面,自然[]type{}也是一种方式。

另外,代码最好自己编译成功过。如:for i ,v in range c,v定义了未使用等,我已帮修正了。

#1
whispermemory
一份代码不是变得越来越好,就是变得越来越差。

O(∩_∩)O~ 谢谢博主指正,否则我就误导大伙了, 罪过罪过

#2