日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

php 使用 go函数指针,golang 什么时候使用指针

發(fā)布時(shí)間:2025/3/15 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 使用 go函数指针,golang 什么时候使用指针 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

有時(shí)候看別人的go代碼,發(fā)現(xiàn)他們有的在代碼里面用了指針,有的不使用。

假設(shè)有個(gè)結(jié)構(gòu)體類型叫做Person,發(fā)現(xiàn)有些方法會(huì)用func methodA (*person Person)作為參數(shù),或者使用 func *(person Person) methodA()作為結(jié)構(gòu)體自己的方法,也就是person這個(gè)結(jié)構(gòu)體 (推薦學(xué)習(xí):go)

可以直接調(diào)用methodA,但是用的是指針。

或者在map結(jié)構(gòu)里面看到var personMap map[string]*Person 的用法

如果是從java轉(zhuǎn)過(guò)來(lái)golang的話,可能不太好理解。因?yàn)閖ava的世界是沒(méi)有指針的,直接傳遞過(guò)去就可以用了,但是到golang上需要注意很多地方。

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

不使用指針的話,某些情況是沒(méi)法賦值給結(jié)構(gòu)體的

接下來(lái)看一段代碼,這段代碼不使用任何指針,先定義一堆用于測(cè)試的對(duì)象type Person struct { //person結(jié)構(gòu)體,包含年齡,名稱,車(chē)

age int

name string

car Car

}

type Car struct { //person名下的車(chē)

name string //車(chē)的名字

}

var personMap map[string]Person //一個(gè)存放person的map

func setName(person Person, name string) { //給參數(shù)person設(shè)置名字

person.name = name

}

func (person Person) setName(name string) { //設(shè)置名字

person.name = name

}

func printName(person Person){ //打印person的名字

fmt.Println(person.name)

}

func (person Person)printName(){ //結(jié)構(gòu)體person自己支持打印名字

fmt.Println(person.name)

}

所以得出結(jié)論,當(dāng)我們需要修改結(jié)構(gòu)體的變量?jī)?nèi)容的時(shí)候,方法傳入的結(jié)構(gòu)體變量參數(shù)需要使用指針,也就是結(jié)構(gòu)體的地址

需要修改map中的架構(gòu)體的變量的時(shí)候也需要使用結(jié)構(gòu)體地址作為map的value

如果僅僅是讀取結(jié)構(gòu)體變量,可以不使用指針,直接傳遞引用即可

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

總結(jié)

以上是生活随笔為你收集整理的php 使用 go函数指针,golang 什么时候使用指针的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。