go中new和make的区别

一句话总结: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.






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值