一句话总结:make用于分配和初始化map、chan、slice类型,返回引用;new用于分配任意类型,返回指针,尽量少用new,可用T{}或&T{}。
函数原型
func new(Type) *Type
func make(Type, size IntegerType) Type //可以传入第三个参数来指定容量值,但不能小于长度值
package main
import "fmt"
type bird struct {
name string
}
func main() {
var i *int = new(int)
*i = 10
fmt.Println(*i)
var b *bird = new(bird)
b.name = "sparrow"
fmt.Println(b.name)
var b2 bird = bird{"sparrow"}
fmt.Println(b2.name)
var b3 *bird = &bird{"sparrow"}
fmt.Println(b3.name)
var m map[int]string = make(map[int]string, 5)
m[1] = "jack"
fmt.Println(m[1])
var s []int = []int{1, 2, 3, 4, 5}
for k, v := range s {
fmt.Println(k, v)
}
var ch chan int = make(chan int, 2)
ch <- 99
fmt.Println(<-ch)
}
10
sparrow
sparrow
sparrow
jack
0 1
1 2
2 3
3 4
4 5
99
成功: 进程退出代码 0.