make
Only slice, channel, map
Let’s see sample code
// Make // slice v := make([]int, 5) v2 := make([]int, 0) fmt.Println(reflect.TypeOf(v)) // []int fmt.Println(reflect.TypeOf(v2)) // []int fmt.Println(v) // [0 0 0 0 0] fmt.Println(v2) // [] // channel chm := make(chan int) fmt.Println(chm) fmt.Println(reflect.TypeOf(chm)) // map m := make(map[string]int) fmt.Println(m) // map[] fmt.Println(reflect.TypeOf(m)) // map[string]int
Make slice with cap? and get slice name using Kind
b := make([]int, 0, 5) fmt.Printf("%s len=%d cap=%d %v\n", b, len(b), cap(b), b) // [] len=0 cap=5 [] fmt.Println(reflect.TypeOf(b)) // []int fmt.Println(reflect.ValueOf(b).Kind()) // slice
new
Return pointer, use struct pointer, channel pointer
Can create value, struct
// Value(pointer) p1 := new(int) // NO p2 := make(int) fmt.Println(reflect.TypeOf(p1)) // *int // Struct c1 := new(Stlike) // NO c3 := make(Stlike) fmt.Println(reflect.TypeOf(c1)) // *main.Stlike // New p2 := new([]int) fmt.Println(reflect.TypeOf(p2)) // *[]int pmap := new(map[string]int) fmt.Println(pmap) // &map[] fmt.Println(reflect.TypeOf(pmap)) // *map[string]int // Array a1 := new([3]int) fmt.Println(reflect.TypeOf(a1)) // [3]int // Channel pch := new(chan int) fmt.Println(reflect.TypeOf(pch)) // *chan int
コメント