最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

golang通過反射設(shè)置結(jié)構(gòu)體變量的值

 更新時間:2021年04月25日 08:50:46   作者:butterfly5211314  
這篇文章主要介紹了golang通過反射設(shè)置結(jié)構(gòu)體變量的值操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

如果需要動態(tài)設(shè)置struct變量field的情況下, 可以利用reflect來完成。

代碼如下:

package main
import (
 "fmt"
 "reflect"
)
// 定義結(jié)構(gòu)體Person
type Person struct {
 Name string
 Age  int
}
func main() {
 person := Person{}
 fmt.Println(person) // 修改前 { 0}
 pp := reflect.ValueOf(&person) // 取得struct變量的指針
 field := pp.Elem().FieldByName("Name") //獲取指定Field
 field.SetString("gerrylon") // 設(shè)置值
 field = pp.Elem().FieldByName("Age")
 field.SetInt(26)
 fmt.Println(person) // 修改后 {gerrylon 26}
}

事實上對于原始值也是一樣的, 要利用指針, 因為golang默認都是傳值, 示例如下:

var f float64 = 3.4
fmt.Println(f) // 3.4
p := reflect.ValueOf(&f) // 注意這里一定要是指針, 否則傳遞給ValueOf的是f的拷貝
v := p.Elem()
v.SetFloat(3.5)
fmt.Println(f) // 3.5

總結(jié):

反射傳入的應(yīng)該是變量的指針

利用 FieldByName()方法可以設(shè)置struct的指定key的值, 非常強大。

補充:golang通過反射修改變量的值

看代碼吧~

package main
import (
	"fmt"
	"reflect"
)
func reflectTest(str interface{}) {
	fs := reflect.ValueOf(str)
	fs.Elem().SetString("jack")
	fmt.Printf("%v\n" ,fs.Elem())
}
func main(){
	var str string = "tom"
	reflectTest(&str)
	fmt.Println(str)
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • golang 的string與[]byte轉(zhuǎn)換方式

    golang 的string與[]byte轉(zhuǎn)換方式

    這篇文章主要介紹了golang 的string與[]byte轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Go語言二維數(shù)組的傳參方式

    Go語言二維數(shù)組的傳參方式

    這篇文章主要介紹了Go語言二維數(shù)組的傳參方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Golang?websocket協(xié)議使用淺析

    Golang?websocket協(xié)議使用淺析

    這篇文章主要介紹了Golang?websocket協(xié)議的使用,WebSocket是一種新型的網(wǎng)絡(luò)通信協(xié)議,可以在Web應(yīng)用程序中實現(xiàn)雙向通信,感興趣想要詳細了解可以參考下文
    2023-05-05
  • go?zero微服務(wù)實戰(zhàn)處理每秒上萬次的下單請求

    go?zero微服務(wù)實戰(zhàn)處理每秒上萬次的下單請求

    這篇文章主要為大家介紹了go?zero微服務(wù)實戰(zhàn)處理每秒上萬次的下單請求示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Go設(shè)計模式之享元模式講解和代碼示例

    Go設(shè)計模式之享元模式講解和代碼示例

    享元是一種結(jié)構(gòu)型設(shè)計模式,它允許你在消耗少量內(nèi)存的情況下支持大量對象,模式通過共享多個對象的部分狀態(tài)來實現(xiàn)上述功能,換句話來說,享元會將不同對象的相同數(shù)據(jù)進行緩存以節(jié)省內(nèi)存,本文就將通過代碼示例給大家詳細介紹一下享元模式
    2023-06-06
  • Golang遞歸獲取目錄下所有文件方法實例

    Golang遞歸獲取目錄下所有文件方法實例

    這篇文章主要給大家介紹了關(guān)于Golang遞歸獲取目錄下所有文件的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2023-02-02
  • Golang基于epoll實現(xiàn)最簡單網(wǎng)絡(luò)通信框架

    Golang基于epoll實現(xiàn)最簡單網(wǎng)絡(luò)通信框架

    這篇文章主要為大家詳細介紹了Golang如何基于epoll實現(xiàn)最簡單網(wǎng)絡(luò)通信框架,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習學習
    2023-06-06
  • Golang微服務(wù)框架Kratos實現(xiàn)Kafka消息隊列的方法

    Golang微服務(wù)框架Kratos實現(xiàn)Kafka消息隊列的方法

    消息隊列是大型分布式系統(tǒng)不可缺少的中間件,也是高并發(fā)系統(tǒng)的基石中間件,所以掌握好消息隊列MQ就變得極其重要,在本文當中,您將了解到:什么是消息隊列?什么是Kafka?怎樣在微服務(wù)框架Kratos當中應(yīng)用Kafka進行業(yè)務(wù)開發(fā),需要的朋友可以參考下
    2023-09-09
  • go-cache的基本使用場景示例解析

    go-cache的基本使用場景示例解析

    這篇文章主要為大家介紹了go-cache的基本使用場景示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • Go語言中g(shù)o?mod?vendor使用方法

    Go語言中g(shù)o?mod?vendor使用方法

    go mod vendor的功能是將新增的依賴包自動寫入當前項目的 vendor目錄,下面這篇文章主要給大家介紹了關(guān)于Go語言中g(shù)o?mod?vendor使用的相關(guān)資料,需要的朋友可以參考下
    2022-10-10

最新評論

吉安市| 寻甸| 宝应县| 定结县| 宁南县| 新昌县| 全椒县| 宁河县| 周至县| 大渡口区| 宽甸| 梧州市| 恩施市| 迁西县| 武平县| 土默特右旗| 平山县| 历史| 屏东县| 齐河县| 洛隆县| 德令哈市| 巴中市| 平湖市| 呼伦贝尔市| 禹城市| 油尖旺区| 宁德市| 舟曲县| 长宁区| 思南县| 普格县| 伊金霍洛旗| 东台市| 常宁市| 尤溪县| 射洪县| 阿克苏市| 锡林郭勒盟| 陕西省| 虎林市|