Golang Array and Slice
Answer
Array : Fixed size
Slice : Flex size
Usage
It’s better to show just sample program.
package main import ( "fmt" "reflect" ) func main() { ar := [3]int{10, 20, 30} // Array s := []int{10, 20, 30} // Slice b := ar[0:3] // Slice from Array fmt.Println(ar) fmt.Println(s) fmt.Println(b) arrayEnumerate(ar) sliceEnumerate(s) arrayEnumerateRange(ar) sliceEnumerateRange(s) // Change slice b[0] = 100 fmt.Println(ar) // [100, 10, 20, 30] fmt.Println(b) // Slice and Append s2 := []int{} fmt.Println(s2) // [] s2 = append(s2, 1) fmt.Println(s2) // [1] // make s3 := make([]int, 3) fmt.Println(s3) // [0 0 0] fmt.Printf("Slice= %v, \nlength = %d, \ncapacity = %d\n", s3, len(s3), cap(s3)) fmt.Println(reflect.TypeOf(s3)) s3 = append(s3, 1) fmt.Println(s3) // [0 0 0 1] } func arrayEnumerate(ar [3]int) { for i := 0; i < len(ar); i++ { fmt.Printf("%d\n", ar[i]) } } func arrayEnumerateRange(ar [3]int) { for _, v := range ar { fmt.Printf("%d ", v) } fmt.Println("") } func sliceEnumerate(sl []int) { for i := 0; i < len(sl); i++ { fmt.Printf("%d\n", sl[i]) } } func sliceEnumerateRange(sl []int) { for i, v := range sl { fmt.Printf("%d:%d ", i, v) } fmt.Println("") }
This shows couple of good example.
- Initialisation
- Slice from Array, reference
- Enumeration (for – len, for range)
- Slice append
- make and slice
コメント