您的位置 首页 golang

跟我一起学习go语言(五)golang中结构体的初始化方法

1、自定义一个 结构体

type Vertex struct {
 X, Y float64
}
 

2、初始化方法-指针:

 Rect 1 := new(Vertex )
rect2 := &Vertex {}
rect3 := &Vertex {1, 2}
rect4 := &Vertex {X:100, Y:200}
 

3、初始化方法-类型实例

a := Rect{}
b := Rect{3, 4}
c := Rect{X=5, Y=6}
 

则表示这个是一个Rect{}类型.两者是不一样的.

4、区别

下面这个例子能展现之间区别:

package main
 import  "fmt"
 
type Vertex struct {
 X, Y float64
} 
func main() {
 rect1 := new(Vertex)
 rect2 := &Vertex{1, 2}
 fmt.Printf("%v %T %v \n", rect1, rect1, *rect1)
 fmt.Printf("%v %T %v \n", rect2, rect2, *rect2)
 
 rect3 := Vertex{X: 5, Y: 6}
 fmt.Printf("%v %T\n", rect3, rect3)
 
}
 

// 输出:

/*

&{0 0} *main.Vertex {0 0}

&{1 2} *main.Vertex {1 2}

{5 6} main.Vertex

*/

从结果中可以清楚的看到两者的不同.

用 new 分配内存 内建函数 new 本质上说跟其他语言中的同名函数功能一样:new(T) 分配了零值填充的 T 类型的内存空间,并且返回其地址,一个 *T 类型的值。用 Go 的术语说,它返回了一个指针,指向新分配的类型 T 的零值。记住这点非常重要。 这意味着使用者可以用 new 创建一个数据结构的实例并且可以直接工作。

务必记得 make 仅适用于 map,slice 和 channel,并且返回的不是指针。应当用 new获得特定的指针。

文章来源:智云一二三科技

文章标题:跟我一起学习go语言(五)golang中结构体的初始化方法

文章地址:https://www.zhihuclub.com/101184.shtml

关于作者: 智云科技

热门文章

网站地图