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

        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號
        主站蜘蛛池模板: 成人国产一区二区三区精品| 久久亚洲国产成人精品无码区| 国产成人综合久久精品尤物| 亚洲精品无码久久久久| 国产精品午夜免费观看网站| 国产精品国产三级国产AV主播| 日产国产精品亚洲系列| 99久久精品国产一区二区| 99热国内精品| 经典国产乱子伦精品视频| 亚洲精品国产日韩无码AV永久免费网| 国产精品单位女同事在线| 久久99久久99小草精品免视看| 国产欧美精品AAAAAA片| 无码日韩精品一区二区免费暖暖| 99精品国产高清一区二区麻豆| 精品精品国产国产| 亚洲精品线在线观看| 国产99久久精品一区二区| 亚洲av午夜福利精品一区| 久久青青草原精品国产不卡| 国产成人精品午夜福麻豆| 久久这里只有精品久久| 国产精品一二区| 97精品国产福利一区二区三区| 精品无码国产一区二区三区AV| 无码精品A∨在线观看| 亚洲人成精品久久久久| 亚洲一日韩欧美中文字幕欧美日韩在线精品一区二 | 九九精品成人免费国产片| 国产精品vⅰdeoxxxx国产| 午夜欧美精品久久久久久久| 自拍偷自拍亚洲精品情侣| 亚洲精品无码久久久| 亚洲精品国产自在久久 | 精品人妻va出轨中文字幕| 日韩精品无码AV成人观看| 少妇伦子伦精品无码STYLES| 久久久久久夜精品精品免费啦| 精品永久久福利一区二区| 久久精品中文字幕无码绿巨人|