go-Array数组

数组Array

  • 定义数组的格式:var <varname> [n] <type> ,n>=0
  • 数组长度也是类型的一部分,因此具有不同长度的数组为不同类型
  • 注意区分指向数组的指针和指针数组
  • 数组在Go中为值类型  (传递到函数中等都属于数组的拷贝)
  • 数组之间可以使用==或!=进行比较,但不可以使用<或>    (必须相同类型)
  • 可以使用new来创建数组,此方法返回一个指向数组的指针
  • Go支持多维数组

 

package main

import (
"fmt"
)

func main() {
m := [2]int{1} //长度为2的int数组,第一个元素为2,其他为0
n := [20]int{19:1} //长度为20的数组,第19个数组为1,其他为0
i = [...]int{1,2,3} //系统自动根据元素个数确定数组长度
var a [2]int
var b [1]int
a = b
fmt.Println(a) //cannot use b (type [1]int) as type [2]int in assignment
}
//注意:数组的长度与类型共同做为一个数组的特征,特征不同不能直接做赋值等操作

指向数组的指针

//指向数组的指针
package main

import (
	"fmt"
)

func main()  {
	a := [...]int{99:1}
	var p *[100]int = &a
	fmt.Println(a)
	fmt.Println(p) //&[0 0 0 0 0...]   
}  

指针数组

//指针数组
package main

import (
	"fmt"
)

func main()  {
	x,y := 1,2
	a := [...]*int{&x,&y} //保存的元素是指向int型的指针 
	fmt.Println(a) //[0x4211aa178 0x4211aa1a0]  保存了两个指针,并没有保存值
}

  

使用new创建数组

package main

import (
	"fmt"
)

func main()  {
	p := new([10]int)    //返回指向数组的指针,可以直接使用索引操作数组元素
	fmt.Println(p)   //&[0 0 0 0 0 0 0 0 0 0]
	p[1] = 2
	fmt.Println(p) // &[0 2 0 0 0 0 0 0 0 0]
}

多维数组 

package main

import (
"fmt"
)

func main() {
a := [2][3]int{
{1,1,1,},
{2,2,2}} //数组元素有两个,每个元素又是长度为3的数组
fmt.Println(a) //[[1 1 1] [2 2 2]]
b := [...][3]int{
{1:10},
{2:6}} // 对于不知道顶级元素有多少个时可以使用...,但是只有顶级元素可以用
fmt.Println(b) //[[0 10 0] [0 0 6]]
}

 冒泡排序

package main

import (
	"fmt"
)

func main()  {
	a := [...]int{3,4,1,6,5,8,9}
	fmt.Println(a)   //[3 4 1 6 5 8 9]
	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) //[9 8 6 5 4 3 1]
}

  

  

 

posted @ 2017-08-28 20:55  amchen  阅读(1445)  评论(0编辑  收藏  举报