zoukankan      html  css  js  c++  java
  • GO编程基础之四

    1.数组Array:

    ---定义数组的格式:var  <varName>  [n]  <type>  ,n >=0

    ---数组长度也是类型的一部分,因此具有不同长度的数组为不同类型

    ---注意区分指向数组的指针和指针数组

    ---数组在Go中为值类型

    ---数组之间可以使用==或!=进行比较,但不可以使用<或>

    ----可以使用new来创建数组,此方法返回一个指向数组的指针

    ---Go支持多维数组

    (1)不合法赋值:数组长度不同

    func main(){
        var a [2]int
        var b [1]int
        b = a
        fmt.Println(b)
    }

     

    (2)合法的赋值:数组长度相同

    func main(){
        var a [2]int
        var b [2]int
        b = a
        fmt.Println(b)
    }

    (3)数组存储值的方式:可以使用变量的简写,长度和值的个数不一致时,会使用0填充

    func main(){
        a := [2]int{1,1}
        fmt.Println(a)
    }

    (4)数组的索引与赋值:

    func main(){
        a := [20]int{19:1}    //第20个元素赋值为1.其余元素用0自动填充
        fmt.Println(a)
    }

    (5)不指定数组长度进行赋值:

    func main(){
        a := [...]int{1,2,3,4,5,6,7,8,9}   //使用三个点代替具体的长度
        fmt.Println(a)
    }

    (6)用索引进行初始化数组:

    func main(){
        a := [...]int{0:1,1:2,2:3,3:4,4:5}  //数组初始化中包含索引
        fmt.Println(a)
    }

    (7)指向数组的指针:打印指针的值和直接打印数组的值一样,只不过多了一个人地址符号

    func main(){
        a := [...]int{99:1}
        var p *[100]int = &a   //指针p是长度为100的int型数组,加*表示是指针,= &a表示是取a的地址
        fmt.Println(p)
    }

    (8)指针数组:输出变量的地址,它实际上是保存了两个指针,而没有保存实际的值

             

    func main(){
        x,y := 1,2
        a := [...]*int{&x,&y}  //a是指向int型的指针,它保存的元素是指向int型的指针,&x,&y表示取x和y的值
        fmt.Println(a)
    }

    (9)其他语言的数组都是引用类型,Go语言的数组是值类型;

    也就是说当你把树枝传递到方法或者函数当中的时候,它是将整个数组进行拷贝的;而不是传递一个地址给那个方法或者函数;

    func main(){
        a := [2]int{1,2}
        b := [2]int{1,3}
        fmt.Println(a == b)   //长度相同的数组可进行比较.返回false
    }
    
    func main(){
        a := [2]int{1,2}
        b := [1]int{1} 
        fmt.Println(a == b)  //长度不相同的数组不可以进行比较,报错
    }

    (10)new关键字来创建数组:

    func main(){
        p := new([10]int)  //使用new关键字来创建数组
        fmt.Println(p)      //返回的也是指向数组的指针
    }

     (11)对单个数组元素进行赋值:

    func main(){
        a := [10]int{}
        a[1] = 2
        fmt.Println(a)
        p := new([10]int)  //使用new关键字来创建数组
        p[1] = 3
        fmt.Println(p)      //返回的也是指向数组的指针
    }

    (12)多维数组:

      a := [2][3]int{
          {1,1,1},
          {2,2,2}}
      fmt.Println(a)
    }

    (13)顶级数组维度可以使用...代替数组长度,但是非顶级的数组维度不可以使用...代替数组

    func main(){
      a := [...][...]int{
          {1,1,1},
          {2,2,2}}
      fmt.Println(a)   //报编译错误
    }

    (14)冒泡排序:

    func main(){
      a := [...]int{5,8,1,6,3,7,2}
      fmt.Println(a)
      num := len(a)   //变量num初始化赋值必须用:=,不能直接用=
      for i := 0; i <num ;i++ {
         for j := i + 1;j<num;j++ {   //变量j初始化赋值必须用:=,不能直接用=
             if a[i]<a[j] {
                 temp := a[i]     //变量temp初始化赋值必须用:=,不能直接用=
                 a[i] = a[j]
                 a[j] = temp   //变量初始化赋值才用:=  ,变量之间赋值不用:=
             }
         }
      }
      fmt.Println(a)
    }

  • 相关阅读:
    (转载)Linux定时任务cron配置
    (转载)PHP源代码分析- tick(s)
    (转载)PCNTL函数族--PHP多进程编程
    org.apache.hadoop.conf-Configured
    org.apache.hadoop.conf-Configuration
    org.apache.hadoop.conf-Configurable
    源码-hadoop1.1.0-core-org.apache.hadoop.classification
    源码-hadoop1.1.0-core-org.apache.hadoop
    作为开始
    测试一下
  • 原文地址:https://www.cnblogs.com/hqutcy/p/10048356.html
Copyright © 2011-2022 走看看