Go Array and Slice

スポンサーリンク

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

golang
スポンサーリンク
Professional Programmer2

コメント