go结构体初始化_golang中结构体的初始化方法
目錄
1、自定義一個結構體
type Vertex struct {
X, Y float64
}
2、初始化方法-指針:
rect1 := new(Vertex )
rect2 := &Vertex {}
rect3 := &Vertex {1, 2}
rect4 := &Vertex {X:100, Y:200}
注意: 這幾個變量全部為指向Rect結構的指針(指針變量),因為使用了new()函數和&操作符.
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獲得特定的指針。
標簽: golang
頂一下
(0)
0%
踩一下
(0)
0%
總結
以上是生活随笔為你收集整理的go结构体初始化_golang中结构体的初始化方法的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: python工具箱查询手册书籍京东_十二
- 下一篇: php layui table,Layu
