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

     

    大纲


    • 数组是固定大小
    • 切片不是动态数组,可以扩容

    区别


    • 定义方式不一样
    • 初始化方法不一样
    package main
    
    import "fmt"
    
    func main() {
    
        // -------------------- 数组 -----------------
        // 指定数组大小
        var a1 [5]int
        // 自动推断数组大小
        a2 := [...]int{1, 2, 3}
        // 打印
        fmt.Println(a1, a2)
    
        // 按索引赋值
        a3 := [...]int{2: 2, 4: 4}
        fmt.Println(a3)
        // 按索引赋值
        a4 := [5]int{2: 2, 4: 4}
        fmt.Println(a4)
    
        // -------------------- 切片 -----------------
        // 定义切片
        var b1 []int
        fmt.Println(b1)
        // 初始化
        b1 = make([]int, 5, 5+3)
        fmt.Println(b1)
        fmt.Printf("b1=%v,len=%d,cap=%d
    ", b1, len(b1), cap(b1))
    
        // 初始化
        b2 := make([]int, 3, 5)
        fmt.Printf("b2=%v,len=%d,len=%d
    ", b2, len(b2), cap(b2))
    }
    
    • 执行结果
    [Running] go run main.go
    
    --------------------
    [0 0 0 0 0] [1 2 3]
    [0 0 2 0 4]
    [0 0 2 0 4]
    []
    [0 0 0 0 0]
    b1=[0 0 0 0 0],len=5,cap=8
    b2=[0 0 0],len=3,len=5
    
    [Done] exited with code=0 in 0.237678 seconds
    

    定义不一样


    • 数组定义
    var a1 [3]int
    var a2 [...]int{1,2,3}
    
    • 切片定义
    var b1 []int
    b2 := make([]int, 3, 5)
    

    初始化不同


    • 数组
    a1 := [...]int{1,2,3}
    a2 := [5]int{1,2,3}
    
    • 切片
    b1 := make([]int, 3,5)



    作者:笑吧小鸟
    链接:https://www.jianshu.com/p/ef5617456b94
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    css3中calc()使用
    垂直居中
    QLineEdit IP地址校验
    UML类图几种关系的总结(网摘)
    如何解压 Mac OS X 下的 PKG 文件(网摘)
    %appdata%目录下配置文件修改
    文件字符串替换
    Qt版权符号显示问题
    Mac OS X 终端命令开启功能
    Qt 无边框拖拽实现
  • 原文地址:https://www.cnblogs.com/php-linux/p/13057433.html
Copyright © 2011-2022 走看看