zoukankan      html  css  js  c++  java
  • 数组

    数组

    如果元素支持==和!=操作符,那么数组也支持此操作

        a := [...]int{1, 2, 3}
        b := [...]int{4, 5, 6}
        println(a == b)  // false
        println(a != b) // true
    
    //下面的代码会抛出异常,因为map类型不支持==和!=运算
        c := [...]map[int]string{{1:"hello"}}
        d := [...]map[int]string{{1: "hello"}}
        println(c == d)  //invalid operation: c == d ([1]map[int]string cannot be compared)
        println(c != d //invalid operation: c == d ([1]map[int]string cannot be compared)
    数组的几种定义方式,可以用key-value形式来指定赋值顺序
    var a = [...]int{1, 2, 3} //[1 2 3]
    var b = [...]int{1: 2, 0: 1, 2: 3} //[1 2 3]
    var c = [...]int{1, 2, 3, 4: 5, 6} //[1 2 3 0 5 6]
    
    数组可以通过指针来传递避免产生值复制,造成开销,其使用方法和正常一样
    b := a
    fmt.Print(b[0])
    for i,v in range b{
      fmt.Println(i, v)
    }
    因为长度是数组的组成部分,所以指向不同长度的数组的指针不是一个数据类型
    var d *[3]int
    var e *[4]int
    d = e //这里会报错,因为d和e属于不同的数据类型,所以不能相互转换
    在数组中,len方法和cap方法没有区别,一个返回长度,一个返回容量,数组长度和容量相等
    for range迭代的性能相对更好一些
    var times [5][0]int
    for range times{ //可以省略迭代时的下标
      fmt.Print("hello")
    }
    ----------------------------------------------------------------------------------
    for i:=range times{ //可以省略迭代时值的传递,只传递索引
            fmt.Println(i)
    }
    长度为0的空数组不占用内存空间




  • 相关阅读:
    strcpy ,strncpy ,strlcpy(转载)
    窗口刷新时的问题(转)
    Linux下的实时流媒体编程(RTP,RTCP,RTSP)
    YUV色彩空间(转自百度百科)
    VC++2005快速构建安全的应用程序
    Linux多线程编程
    C++ PASCAL关键字(转)
    SkinMagic 进行皮肤设置
    .h和.cpp文件的区别
    strcpy_s与strcpy安全性的比较(转载)
  • 原文地址:https://www.cnblogs.com/hualou/p/12069774.html
Copyright © 2011-2022 走看看