zoukankan      html  css  js  c++  java
  • GO数组

    Array(数组)

    数组是同一种数据类型元素的集合。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化
    数组定义:
    var 数组变量名 [元素数量]T

    复制代码
    var a1 [3]int       //定义一个长度为3且存放int类型的数组
    var a2 [2]string    //定义一个长度为3且存放string类型的数组
    a1 = [3]int{1,2,3}  //数组的初始化
    a2 = [2]string{"bj","tj"}
    fmt.Println(a1)     //[1 2 3]
    fmt.Println(a2)     //[bj tj]
    复制代码

    数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1.
    数组的初始化
    可以先定义后赋值,也可以让编译器根据初始值的个数自行推断数组的长度。

    复制代码
    var num = [...]int{1,2,3,4,5}
    var city = [...]string{"bj","tj","sz","gz"}
    fmt.Println(num)        //[1 2 3 4 5]
    fmt.Printf("%T
    ",num)  //[5]int
    fmt.Println(city)       //[bj tj sz gz]
    fmt.Printf("%T
    ",city) //[4]string
    复制代码

    还可以根据索引值初始化数组:

    var e [3]int
    e = [3]int{2:1}
    fmt.Println(e)  //[0 0 1]

    数组的遍历

    复制代码
    a := [...]int{1,3,5,7,8}
    //for循环遍历
    for i:=0;i<len(a);i++{
        fmt.Println(a[i])
    }
    //for range遍历
    for k,v := range a{
        fmt.Println(k,v)
    }
    复制代码

     冒泡排序

    复制代码
    func main() {
        arr01 := [...]int{54,123,11,22,875,124}
        for i :=1;i<len(arr01);i++{
            //fmt.Println(arr01[i])
            for j:=0;j<len(arr01)-i;j++{
                if arr01[j] > arr01[j+1]{
                    arr01[j],arr01[j+1] = arr01[j+1],arr01[j]
                }
            }
            fmt.Println(arr01)
        }
    }
    复制代码

    多维数组

    二维数组定义

    复制代码
    //二维数组定义
        two := [3][2]string{
            {"beijing","shanghai"},
            {"广州","深圳"},
        }
        fmt.Println(two)        //[[beijing shanghai] [广州 深圳] [ ]]
        fmt.Println(two[1][1])  //深圳
        //多维数组只有第一层可以使用...来让编译器推导数组长度
        two1 := [...][2]string{
            {"beijing","shanghai"},
            {"广州","深圳"},
            {"广州","深圳"},
            {"广州","深圳"},
        }
        fmt.Println(two1)   //[[beijing shanghai] [广州 深圳] [广州 深圳] [广州 深圳]]
    复制代码

    二维数组遍历

    复制代码
    for _,v1 :=range two1{
            for _,v2 :=range v1{
                fmt.Printf("%s	",v2)
            }
            fmt.Println()
        }
    输出:beijing shanghai
    
    广州 深圳
    
    广州 深圳
    
    广州 深圳
    复制代码


    数组是值类型
    数组是值类型,赋值和传参会复制整个数组。因此改变副本的值,不会改变本身的值。

    复制代码
    //数组是值类型
        s1 := [2]int{1,2}
        s2 := s1    //s1拷贝一份给s2
        s2[1] = 10
        fmt.Println(s1)     //[1  2]
        fmt.Println(s2)     //[1 10]
        //多维数组
        s3 := [...][2]int{
            {1,2},
            {3,4},
        }
        s4 := s3
        s4[1][1] = 10
        fmt.Println(s3)     //[[1 2] [3 4]]
        fmt.Println(s4)     //[[1 2] [3 10]]
    复制代码
  • 相关阅读:
    OpenGL相关文章
    gluOrtho2D与glViewport
    QOpenGLWidget
    openGL中的gl,glu,glut
    QT对话框
    QT布局
    QT容器类
    [POJ1014]Dividing(二进制优化多重背包)
    [Codefroces401D]Roman and Numbers(状压+数位DP)
    [HDU6326]Monster Hunter(贪心)
  • 原文地址:https://www.cnblogs.com/show58/p/12607823.html
Copyright © 2011-2022 走看看