• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Go new 和 make的区别

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1.new 返回的是指针类型,所以一般用于给非引用类型(int,string,array等)

package main

//定义一个struct
type Person struct {
	Name string
	Age  int
}

func main() {
	p1 := Person{
		Name: fmt.Sprintf("你好呀:%v", "张三"),
		Age:  18,
	}
	fmt.Printf("type:%T,value:%v\n", p1, p1)
	// 取出变量的内存地址,也就是指针,是通过&变量名
	// 也就是 &p1
	fmt.Printf("type:%T,value:%v\n", &p1, p1)

	// new 返回的是指针类型
	p2 := new(Person)

	// 指针类型访问这个类型的属性和方法
	// 可以通过 (*p2).Name
	// 也可以通过 p2.Name ,这种方式其实是Go的语法糖,本质上还是通过 (*p2).Name
	p2.Name = fmt.Sprintf("你好呀:%v", "李四")
	(*p2).Name = fmt.Sprintf("你好呀:%v", "王五")
	p2.Age = 20

	fmt.Printf("type:%T,value:%v\n", p2, p2)

	// 通过指针找到变量,是通过*变量名
	// 也就是 *p2
	fmt.Printf("type:%T,value:%v\n", *p2, p2)
}

2. make 用于引用类型(map,slice,channel),一般多用于初始化

// map的初始化
maps := make(map[string]string, 10)

// channel的初始化
channel := make(chan string, 10)

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
pusher-http-go发布时间:2022-07-10
下一篇:
Go-Redis发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap