校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > golang通過(guò)反射設(shè)置結(jié)構(gòu)體變量的值

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

熱門標(biāo)簽:excel地圖標(biāo)注分布數(shù)據(jù) 阿克蘇地圖標(biāo)注 涿州代理外呼系統(tǒng) 評(píng)價(jià)高的400電話辦理 電話機(jī)器人軟件免費(fèi) 壽光微信地圖標(biāo)注 百度地圖標(biāo)注后傳給手機(jī) 外呼系統(tǒng)顯本地手機(jī)號(hào) 外呼系統(tǒng)用什么卡

如果需要?jiǎng)討B(tài)設(shè)置struct變量field的情況下, 可以利用reflect來(lái)完成。

代碼如下:

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}
}

事實(shí)上對(duì)于原始值也是一樣的, 要利用指針, 因?yàn)間olang默認(rèn)都是傳值, 示例如下:

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的值, 非常強(qiáng)大。

補(bǔ)充:golang通過(guò)反射修改變量的值

看代碼吧~

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)
}

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

您可能感興趣的文章:
  • go語(yǔ)言 全局變量和局部變量實(shí)例
  • golang 在windows中設(shè)置環(huán)境變量的操作
  • 詳解Go語(yǔ)言變量作用域
  • 關(guān)于Golang變量初始化/類型推斷/短聲明的問(wèn)題
  • 淺談golang并發(fā)操作變量安全的問(wèn)題
  • go語(yǔ)言的初始化順序,包,變量,init詳解
  • 解決golang 關(guān)于全局變量的坑

標(biāo)簽:吐魯番 重慶 汕頭 梅河口 蘭州 雞西 欽州 銅川

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《golang通過(guò)反射設(shè)置結(jié)構(gòu)體變量的值》,本文關(guān)鍵詞  golang,通過(guò),反射,設(shè)置,結(jié)構(gòu),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang通過(guò)反射設(shè)置結(jié)構(gòu)體變量的值》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于golang通過(guò)反射設(shè)置結(jié)構(gòu)體變量的值的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 庐江县| 团风县| 山丹县| 黄山市| 阿拉尔市| 宝坻区| 伊金霍洛旗| 商南县| 雷山县| 大理市| 宝兴县| 阿克苏市| 外汇| 德阳市| 盐亭县| 固阳县| 德昌县| 七台河市| 北宁市| 武胜县| 名山县| 寿阳县| 邵东县| 江山市| 西宁市| 大安市| 于田县| 亚东县| 锡林郭勒盟| 灌阳县| 四子王旗| 清苑县| 澄江县| 民县| 杭州市| 贡觉县| 嘉峪关市| 怀远县| 微山县| 陇西县| 行唐县|