study_go_day3 数组

2019-03-08  本文已影响0人  无风起个浪

package main

import "fmt"

/**数组

* 定义数组数量在前类型在后

* 可以通过[...]来让编译器帮数有多少个

* 数组是值类型

* [5]int 和 [6]int是不同类型

* 调用func printArray(arr [5]int)会拷贝,go语言是值传递

* go语言中一般不直接使用数组,go语言使用的是slice

*/

func  arrays()  {

var arr [5]int

arr1 := [3]int{1,2,3}

arr2 := [...]int{1,2,3,4,5,6}

fmt.Println(arr,arr1,arr2)

var grid [4][5]int//二维数组,表示有4行5列

  fmt.Println(grid)

//遍历数组,普通方法

  for i :=0;i < len(arr2) ;i++  {

fmt.Println(i,arr2[i])

}

fmt.Println("range")

//使用range关键字

  for i,v :=range arr2 {

fmt.Println(i,v)

}

fmt.Println("_____")

//"_"跳过某一个值

  for _,v :=range arr2 {

fmt.Println(v)

}

fmt.Println("只取下标")

//只取下标

  for i :=range arr1 {

fmt.Println(i)

}

}

//数组是值类型

func printArray(arr [5]int)  {

arr[0] =100

  for _,v :=range arr {

fmt.Println(v)

}

}

//通过指针改变数组值

func printArray1(arr *[5]int)  {

arr[0] =100

  for _,v :=range arr {

fmt.Println(v)

}

}

//通过slice改变数组值

func printArray2(arr []int)  {

arr[1] =88

  for _,v :=range arr {

fmt.Println(v)

}

}

/** slice (切片)

* 计算机中一般是半开半闭区间

* slice不是值类型,slice是对array的一个视图

*/

func studySlice()  {

arr := [...]int{0,1,2,3,4,5,6,7}

fmt.Println(arr[2:6])

fmt.Println(arr[:6])

fmt.Println(arr[2:])

fmt.Println(arr[:])

}

func updateSlice(arr []int)  {

arr[0] =99

}

func main() {

arrays()

fmt.Println("printArray(arr)")

var arr [5]int

printArray(arr)

fmt.Println("arr")

fmt.Println(arr)

fmt.Println("通过指针改变数组值")

printArray1(&arr)

fmt.Println("arr")

fmt.Println(arr)

fmt.Println("通过slice改变数组值")

printArray2(arr[:])

fmt.Println("arr")

fmt.Println(arr)

fmt.Println("studySlice")

studySlice()

arr1 := [...]int{0,1,2,3,4,5,6,7}

s1 := arr1[2:6]

//s2 := arr1[:6]

//s3 := arr1[2:]

//s4 := arr1[:]

  fmt.Println("切片之后")

updateSlice(s1)

fmt.Println(s1)

fmt.Println(arr1)

fmt.Println("Reslice")

fmt.Println(s1)

s1 = s1[:4]

fmt.Println(s1)

s1 = s1[2:]

fmt.Println(s1)

//slice扩展

    fmt.Println("slice扩展")

}

上一篇 下一篇

猜你喜欢

热点阅读