Files
bulma/make_vs_new.go
T

21 lines
637 B
Go

package main
import (
"fmt"
"reflect"
)
func main() {
// make 创建切片(直接可用)
sMake := make([]int, 2)
sMake[0] = 100 // 合法操作
fmt.Printf("sMake: 类型=%s, 内容=%v\n", reflect.TypeOf(sMake), sMake) // sMake: 类型=[]int, 内容=[100 0]
// new 创建切片指针(需手动初始化)
sNew := new([]int)
// (*sNew)[0] = 100 // 运行时 panic(未初始化底层数组)
*sNew = make([]int, 2) // 手动初始化
(*sNew)[0] = 100
fmt.Printf("sNew: 类型=%s, 内容=%v\n", reflect.TypeOf(sNew), *sNew) // sNew: 类型=*[]int, 内容=[100 0]
}