golang成长记我爱编程

golang中new和make总结

2018-06-03  本文已影响0人  Tim_SSS

new简介及使用方式

type SyncedBuffer struct {
    str string
    num int
    sum int
}
m := new(SyncedBuffer)
fmt.Println("new m 变量输出:", m)  //new m 变量输出: &{ 0 0}
m1 := SyncedBuffer{}
fmt.Println("普通赋值 m1 变量输出:",m1) // 普通赋值 m1 变量输出: { 0 0}
m2 := &SyncedBuffer{} 
fmt.Println("&Type赋值 m2 变量输出:", m2) // &Type赋值 m2 变量输出: &{ 0 0}
m3 := &SyncedBuffer{"123",123, 44} 
fmt.Println("&Type赋值 带有初始值的m3 变量输出:", m3)//&Type赋值 带有初始值的m3 变量输出: &{m3Test 123 44}

make简介及使用方式

Slice := make([]int, 3, 5) //  生成一个int类型切片,初始长度:3,容量:5
Map := make(map[string]int,5) // 生成一个键string值int类型的字典,长度:5
Chan := make(chan int, 5)  // 生成一个int类型的通道,长度:5

new和make使用场景

new || &Type 场景:
new() 变量类型里面的值,是零值,就可以,不需要动态变化,比如type struct 属性全是锁。&type 可以自定义初始化变量的值,也可以像new()一样,默认生成值(零值),这样做的好处,不用想c语言那样,申请一个变量,在取地址,赋值给指针变量,简化操作,注重实用。
make 使用场景:
使用map、silce、channel三种资源类型,自己通过这三种组合方式,定义的类型。

欢迎吐槽,☺️
上一篇下一篇

猜你喜欢

热点阅读