Golang 数组和切片
数组和slice切片切片又称动态数组
顾名思义,定义切片对数组存储元素的个数不做要求,而普通数组在定义时必须给明个数。
数组
声明和赋值
package main
import "fmt"
func main() {
var array1 [3]int = [3]int{1,2,3}
fmt.Println(array1)
}
先声明后赋值
package main
import "fmt"
func main() {
var array2 [3]int
for index,_ := range array2 {
array2[index] = index + 1
}
fmt.Println(array2)
}
短声明
package main
import "fmt"
func main() {
array3 := [3]int{1,2,3}
fmt.Println(array3)
}
个数推导
package main
import "fmt"
func main() {
array4 := [...]int{1,2,3}
fmt.Println(array4)
}
slice
slice切片
方式一
package main
import "fmt"
func main() {
var array1 []int = []int{}
array1 = append(array1,1)
fmt.Println(array1)
}
方式二 make
package main
import "fmt"
func main() {
array2 := make([]int, 0)
array2 = append(array2,1)
fmt.Println(array2)
}
以上,需要指出的是:
appendarray[0] = 1
// good
array2 = append(array2,1)
// bad
array2[0] = 1
range函数
rangefor功能类似
package main
import "fmt"
func main() {
array := [...]int {1,2,3}
for index,item := range array {
fmt.Println(index,item)
}
}
rangeindex
array := [...]int {1,2,3}
for _,item := range array {
fmt.Println(item)
}
_