GO编程基础之四
Posted hqutcy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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) }
以上是关于GO编程基础之四的主要内容,如果未能解决你的问题,请参考以下文章