站長資訊網
最全最豐富的資訊網站

golang 什么時候使用指針

golang 什么時候使用指針

有時候看別人的go代碼,發現他們有的在代碼里面用了指針,有的不使用。

假設有個結構體類型叫做Person,發現有些方法會用func methodA (*person Person)作為參數,或者使用 func *(person Person) methodA()作為結構體自己的方法,也就是person這個結構體 (推薦學習:go)

可以直接調用methodA,但是用的是指針。

或者在map結構里面看到var personMap map[string]*Person 的用法

如果是從java轉過來golang的話,可能不太好理解。因為java的世界是沒有指針的,直接傳遞過去就可以用了,但是到golang上需要注意很多地方。

那么什么時候該用呢?為什么有些地方需要用呢?

不使用指針的話,某些情況是沒法賦值給結構體的

接下來看一段代碼,這段代碼不使用任何指針,先定義一堆用于測試的對象

type Person struct {  //person結構體,包含年齡,名稱,車     age  int     name string     car  Car }  type Car struct {  //person名下的車     name string  //車的名字 }  var personMap map[string]Person   //一個存放person的map  func setName(person Person, name string) { //給參數person設置名字     person.name = name }  func (person Person) setName(name string) {  //設置名字     person.name = name } func printName(person Person){  //打印person的名字     fmt.Println(person.name) } func (person Person)printName(){  //結構體person自己支持打印名字     fmt.Println(person.name) }

所以得出結論,當我們需要修改結構體的變量內容的時候,方法傳入的結構體變量參數需要使用指針,也就是結構體的地址

需要修改map中的架構體的變量的時候也需要使用結構體地址作為map的value

如果僅僅是讀取結構體變量,可以不使用指針,直接傳遞引用即可

*type 這里的type這個變量存放的東西是地址,這點需要明確,需要使用&type獲取到地址。

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
精品国产乱码欠欠欠欠精品| 91精品国产免费久久国语蜜臀| 日韩毛片免费无码无毒视频观看| 国产精品1000夫妇激情啪发布 | 国产2021精品视频免费播放| 久章草在线精品视频免费观看| 国产在线精品一区二区三区不卡| 一区二区三区四区精品| 亚洲综合日韩中文字幕v在线| 日韩精品中文字幕在线| 国产av影片麻豆精品传媒| 亚洲国产精品免费观看| 91精品国产综合久久香蕉| 日韩精品视频一区二区三区| 国99精品无码一区二区三区| 自拍偷自拍亚洲精品情侣| 岛国精品一区免费视频在线观看 | 中文字幕无码精品亚洲资源网 | 91视频国产精品| 久久久精品久久久久特色影视| 亚洲精品无码久久久| 久草这里只有精品| 亚洲精品专区在线观看| 九九热视频精品在线| 亚洲精品成人网久久久久久| 无码精品人妻一区二区三区影院 | 久久精品国产99国产精品澳门| 人人鲁人人莫人人爱精品| 国产午夜亚洲精品理论片不卡| 久久露脸国产精品| 国内精品九九久久精品| 国产亚洲美女精品久久久2020| 亚洲精品自在在线观看| 久久国产乱子伦精品免费强| 亚洲av永久无码精品秋霞电影影院 | 亚洲国产精品第一区二区| 久久精品中文字幕免费| 午夜精品美女自拍福到在线| 99久久亚洲综合精品成人网| 69国产精品视频免费| 欧乱色国产精品兔费视频|