11.数组和动态数组(slice)区别
1.数组
示例代码
arr1.go
package chapter08
import "fmt"
// 数组和形参 都是值传递
func printArray(myArray [4]int) {
// 值拷贝
for index, value := range myArray {
fmt.Println("index = ", index, ", value = ", value)
}
myArray[1] = 111
}
func Run() {
// 固定长度的数组,数组的长度也是数组定义的一部分
var myArray1 [10]int
myArray2 := [10]int{1, 2, 3, 4} // 数组的前4个是有值,后6个是默认值
myArray3 := [4]int{11, 22, 33, 44}
// myArray1 初始化
fmt.Println("myArray1=====")
for i := 0; i < 10; i++ {
fmt.Printf("%d ", myArray1[i])
if i < 9 {
fmt.Printf(",")
}
}
fmt.Println("")
fmt.Println("myArray2======")
for i, v := range myArray2 {
fmt.Println("index = ", i, ", value = ", v)
}
// 查看数组的数据类型
fmt.Printf("myArray1 types = %T\n", myArray1)
fmt.Printf("myArray2 types = %T\n", myArray2)
fmt.Printf("myArray3 types = %T\n", myArray3)
printArray(myArray3)
fmt.Println("--------------")
for index, value := range myArray3 {
fmt.Println("index = ", index, ", value = ", value)
}
}
arr1_test.go
package chapter08
import "testing"
func TestRUn(t *testing.T) {
Run()
}
执行结果
=== RUN TestRUn
myArray1=====
0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0
myArray2======
index = 0 , value = 1
index = 1 , value = 2
index = 2 , value = 3
index = 3 , value = 4
index = 4 , value = 0
index = 5 , value = 0
index = 6 , value = 0
index = 7 , value = 0
index = 8 , value = 0
index = 9 , value = 0
myArray1 types = [10]int
myArray2 types = [10]int
myArray3 types = [4]int
index = 0 , value = 11
index = 1 , value = 22
index = 2 , value = 33
index = 3 , value = 44
--------------
index = 0 , value = 11
index = 1 , value = 22
index = 2 , value = 33
index = 3 , value = 44
--- PASS: TestRUn (0.00s)
PASS
ok
2.切片(动态数组)
示例代码
arr2.go
package chapter08
import "fmt"
func printArray2(myArray []int) {
// 切片是引用传递
// _ 表示匿名变量
for _, value := range myArray {
fmt.Println("value = ", value)
}
myArray[0] = 100
}
// main
func Run2() {
myArray := []int{1, 2, 3, 4} // 动态数组,切片 slice
fmt.Printf("myArray type is %T\n", myArray)
printArray2(myArray)
fmt.Println("===========")
for _, value := range myArray {
fmt.Println("value = ", value)
}
}
arr2_test.go
package chapter08
import "testing"
func TestRUn2(t *testing.T) {
Run2()
}
执行结果
=== RUN TestRUn2
myArray type is []int
value = 1
value = 2
value = 3
value = 4
===========
value = 100
value = 2
value = 3
value = 4
--- PASS: TestRUn2 (0.00s)
PASS
ok
3.总结


浙公网安备 33010602011771号