码迷,mamicode.com
首页 > 编程语言 > 详细

Golang基础_03-数组Array

时间:2019-08-23 19:35:20      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:方法   lang   定义   指针   var   ref   不同的   目录   list   

目录

@

注意事项

  • 数组在Go中是值类型,不是引用
  • 类型和长度都相同的数组之间可以使用==或者!=进行比较(Go中已经实现了),但是没有<或者>
  • Go支持多维数组

    数组定义

    Tips

  • 两个数组不能直接赋值
  • 数组定义格式:var <Varname> [n]<type>, n>=0
  • 数组长度也是类型的一部分,因此不同长度数组为不同的类型
  • 可以用索引初始化下标为n的位置的值

    Examples

func main(){
    var a [20]int
    a = [20]int{19:1} //索引
    b := [3]string{}
    c := [...]int{0:1, 1:2, 2:3}
    fmt.Println(a,b,c)
}

指向数组的指针和指针数组

Examples

func main(){
    var a [20]int
    a = [20]int{19:1}
    var p *[20]int = &a
    fmt.Println(*p)
}
func main(){
    x,y := 1,2
    var pp [20]*int = [20]*int{&x, &y}
    fmt.Println(pp)
}

Tips

  • 可以用new创建数组,此方法返回一个指向数组的指针
  • 不管是数组本身还是指向数组的指针,都可以用中括号的方式改变数组的值
func main(){
    a := [10]int{}
    a[1]=3
    fmt.Println(a)
    p := new([10]int)
    p[1]=3
    fmt.Println(p)
}
/*
command-line-arguments
[0 3 0 0 0 0 0 0 0 0]
&[0 3 0 0 0 0 0 0 0 0]
*/

多维数组

  • 多维数组也可以使用索引
  • 二维数组的第一个参数用[...]可以省略,但是第二个不可以
func main(){
    a := [2][3]int{
        {1,2,3},
        {4,5,6}}
    fmt.Println(a)
}
/*
> Output:
[[1 2 3] [4 5 6]]
*/

下面的代码会报错:

func main(){
    a := [2][3]int{
        {1,2,3},
        {4,5,6}
    }
    fmt.Println(a)
}
//注意数组右大括号的位置

冒泡排序例子

func main(){
    a := [...]int{1,3,4,6,8,2,10,45,34,9,8}
    fmt.Println(a)
    fmt.Println("从小到大排序")
    num := len(a)
    for i := 0; i < num; i++ {
        for j := i+1; j<num; j++{
            if a[i]>a[j] {
                temp := a[i]
                a[i] = a[j]
                a[j] = temp
            }
        }
    }
    fmt.Println(a)
}
/*
> Output:
command-line-arguments
[1 3 4 6 8 2 10 45 34 9 8]
从小到大排序
[1 2 3 4 6 8 8 9 10 34 45]
*/

Golang基础_03-数组Array

标签:方法   lang   定义   指针   var   ref   不同的   目录   list   

原文地址:https://www.cnblogs.com/leafs99/p/golang_basic_03.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!