日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

go结构体初始化_golang中结构体的初始化方法

發布時間:2024/7/19 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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中结构体的初始化方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。