zoukankan      html  css  js  c++  java
  • 数组和切片的区别

    go中的数组和切片的区别和用法

    var arr1 [3]int
    var arr2 [3]int = [3]int{1, 2, 3}
    fmt.Println(arr1)
    fmt.Println(arr2)

     我声明两个数组,初始化和没初始化的

     然后运行这段代码输出为[0 0 0] [1 2 3] 有没有发现和其他语言不一样的地方,细心的朋友应该已经发现了 在go语言里默认为0值

    D:/program/GoLang/hello golang/src/b/b.exe  [D:/program/GoLang/hello golang/src/b]
    [0 0 0]
    [1 2 3]
    成功: 进程退出代码 0.

    然后我们再来看看切片,切片和数组很像。可以说是一种特殊数组

    var slice []int = []int{3, 6}
    fmt.Println(slice)
    slice = append(slice, 1, 2, 3, 5, 8)
    fmt.Println(slice)

    这里声明了一个slice int类型的数组切片 切片的长度是可变的,我们可以通过append方法向里面添加同类型的值

    运行代码控制台 打印的和我们预想的完全一样

    [3 6]
    [3 6 1 2 3 5 8]
    成功: 进程退出代码 0.

    上面我们讲述了切片和数组的用法,现在来看看他们的区别

    fmt.Println("数组***********************************")
    var arr1 [3]int = [3]int{1, 2, 3}
    var arr2 [3]int = arr1
    fmt.Println(arr1, arr2)
    arr2[0] = 10002
    fmt.Println(arr1, arr2)
     
    fmt.Println("切片***********************************")
    var slice1 []int = []int{1, 2, 3}
    var slice2 []int = slice1
    fmt.Println(slice1, slice2)
    slice2[0] = 10002
    fmt.Println(slice1, slice2)

    输出结果如下 可以看出数组是值拷贝而切片是引用

    数组***********************************
    [1 2 3] [1 2 3]
    [1 2 3] [10002 2 3]
    切片***********************************
    [1 2 3] [1 2 3]
    [10002 2 3] [10002 2 3]
    成功: 进程退出代码 0.
  • 相关阅读:
    Java IO流
    Java中Char和Byte的区别
    Java常用类
    View
    3 View
    View
    3 View
    3 View视图 URLconf
    2 Model层
    2 Model层-模型成员
  • 原文地址:https://www.cnblogs.com/-wanglei/p/14235359.html
Copyright © 2011-2022 走看看