Go 基础教程--6 数组 Array

数组Array

  1. 定义数组的格式:var [n],n>=0
  2. ==数组长度也是类型的一部分,因此具有不同长度的数组为不同类型==
  3. 注意区分指向数组的指针和指针数组
  4. 数组在Go中为值类型
  5. 数组之间可以使用==或!=进行比较,但不可以使用<或>
  6. 可以使用new来创建数组,此方法返回一个指向数组的指针
  7. Go支持多维数组

示例1:

package main
import "fmt"
func main() {
    var a [2]int
    var b [1]int
    b = a
    fmt.Println(b)
}
//.\temp10.go:7:4: cannot use a (type [2]int) as type [1]int in assignment
数组长度也是类型的一部分,因此具有不同长度的数组为不同类型

var a [2]int
fmt.Println(a)
//[0 0]

var a [2]string
fmt.Println(a
//[ ]

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

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

定义一个数组,前19个都是0,最后一个是1
a := [20]int{19: 1}
fmt.Println(a)
//[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]

不指定长度
a := [...]int{1,2,3,4,5}
fmt.Println(a)
//[1 2 3 4 5]

设置指定元素的数组
a := [...]int{0: 1, 1: 2, 2: 3,3: 4, 4: 5}
fmt.Println(a)
//[1 2 3 4 5]

指向数组的指针
a := [...]int{99: 1}
var p *[100]int = &a
fmt.Println(p)
//&[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]

指针数组
x, y := 1, 2
a := [...]*int{&x,&y}
fmt.Println(a)
//[0xc00004e058 0xc00004e070]

示例2:

数据的比较,注意类型问题

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

a := [2]int{1,2}
b := [1]int{1}
fmt.Println(a == b)
数组不同不能比较 
//invalid operation: a == b (mismatched types [2]int and [1]int)

示例3:

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

p := new([10]int)
fmt.Println(p)
//&[0 0 0 0 0 0 0 0 0 0]

//对单个数组的值赋值
a := [10]int{}
a[1] = 2
fmt.Println(a)

p := new([10]int)
p[1] = 2
fmt.Println(p)
//[0 2 0 0 0 0 0 0 0 0]
//&[0 2 0 0 0 0 0 0 0 0]

示例3:

多维数组

a := [2][3]int{
        {1,1,1},
        {2,2,2}} //此处的}不能另起一行
fmt.Println(a)
//[[1 1 1] [2 2 2]]

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

非顶级的数组长度不能使用...代表长度,否则编译错误

Go语言版冒泡排序

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

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)
//[5 2 6 3 9]
//[9 6 5 3 2]
go
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!