精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一篇學(xué)會(huì)Go中reflect反射的詳細(xì)用法

開發(fā) 前端
在Go語(yǔ)言的反射機(jī)制中,任何接口值都由是一個(gè)具體類型和具體類型的值兩部分組成的(我們?cè)谏弦黄涌诘牟┛椭杏薪榻B相關(guān)概念)。

應(yīng)用場(chǎng)景

1.判斷函數(shù)變量是否否和標(biāo)準(zhǔn)

2.驗(yàn)證接口值是否合理如(是否為空,傳入的字段是否合規(guī))

3.獲取變量的類型進(jìn)行斷言等操作

在Go語(yǔ)言的反射機(jī)制中,任何接口值都由是一個(gè)具體類型和具體類型的值兩部分組成的(我們?cè)谏弦黄涌诘牟┛椭杏薪榻B相關(guān)概念)。 在Go語(yǔ)言中反射的相關(guān)功能由內(nèi)置的reflect包提供,任意接口值在反射中都可以理解為由reflect.Type和reflect.Value兩部分組成,并且reflect包提供了reflect.TypeOf和reflect.ValueOf兩個(gè)函數(shù)來(lái)獲取任意對(duì)象的Value和Type。

1.結(jié)構(gòu)體中使用反射

  • 獲取 2 種類型信息的方法:

reflect.TypeOf() 獲取類型信息,返回 Type 類型;

reflect.ValueOf() 獲取數(shù)據(jù)信息,返回 Value 類型。

反射中值的可設(shè)置性,可以用 CanSet 方法來(lái)判斷值是否可以設(shè)置。在 Go 中,函數(shù)參數(shù)的傳遞都是值拷貝,在反射中要修改值,必須傳遞指針,并且用 Elem() 方法獲取指針的值,然后進(jìn)行修改。

reflect.ValueOf() 返回的 Value 類型:

  • 它有一個(gè) Type() 方法,返回的是 reflect.Value 的 Type
  • 它有獲取 Value 類型值的方法如果我們知道是 float 類型,所以直接用 Float() 方法。如果不知道具體類型呢?由上面例子可知用 Interface() 方法,然后在進(jìn)行類型斷言 v.Interface().(float64) 來(lái)判斷獲取值

v.Kind() 和 v.Type() 區(qū)別:

在 type MyInt int 里,v.Kind() 與 v.Type() 返回了不同的類型值,Kind()返回的是 int,Type() 返回的是 MyInt。在 Go 中,可以用 type 關(guān)鍵字定義自定義類型,Kind() 方法返回底層類型。比如還有結(jié)構(gòu)體,指針等類型用 type 定義的,那么 Kind() 方法就可以獲取這些類型的底層類型。

案例使用方法

package main

import (
	"fmt"
	"reflect"
)

type Userinfo struct {
	Age      int `id:"iloveyou" num:"222"` //tag標(biāo)簽信息
	UserName string
}

func GetReflickInfo(i interface{}) {
	vl := reflect.ValueOf(i)
	//nii := 200
	fmt.Println("kind ======", vl.Kind())
	if vl.Kind() == reflect.Ptr { //如是指針類型,先取值
		vl = vl.Elem() //Elem方法就是取值操作
	}
	vlt := vl.Type() //獲取具體類型,如自定義結(jié)構(gòu)體的類型
	fmt.Println("kind ======type===", vl.Kind(), vlt)
	if vl.Kind() != reflect.Struct {
		fmt.Println("類型:", vlt, " 名字:", vlt.Name(), " 數(shù)值:", vl)
		//如是整數(shù)種類,又可以修改,CanSet屬性為true,則進(jìn)行修改。
		if vl.Kind() == reflect.Int || vl.Kind() == reflect.Int64 && vl.CanSet() {
			vl.SetInt(100)
			//reflect.New(vlt)是創(chuàng)建了一個(gè)vlt類型的指針變量。
			ni := reflect.New(vlt)
			//創(chuàng)建后的ni是reflect.Value對(duì)象,需要通過(guò)ValueOf來(lái)賦值
			ni = reflect.ValueOf(222)
			fmt.Println("修改后int數(shù)值:", vl, "新建數(shù)值:", ni)
		}
		//如是浮點(diǎn)數(shù)種類,又可以修改,CanSet屬性為true,則進(jìn)行修改。
		//可設(shè)置性檢查:vl.CanSet() 是一個(gè)方法,用于確認(rèn)vl的值是否可以被修改。在Go中,不是所有的反射值都能被設(shè)置,比如函數(shù)參數(shù)或者某些靜態(tài)類型就不能。如果vl的值可以被改變,CanSet()將返回true。
		if vl.Kind() == reflect.Float32 || vl.Kind() == reflect.Float64 && vl.CanSet() {
			vl.SetFloat(100.11) //調(diào)用vl.SetFloat(100.11)方法將變量vl的值設(shè)置為100.11。
			fmt.Println("修改后float數(shù)值:", vl)
		}
	} else {
		fmt.Println("結(jié)構(gòu)體類型:", vlt, " 名字:", vlt.Name())
		for i := 0; i < vl.NumField(); i++ {
			//vl是具體的值,這里vl.Field(i)就是枚舉出每一個(gè)成員的值
			//vlt是獲取的類型,vlt.Field(i).Name和.Type是枚舉出每一個(gè)成員的名字和類型
			//也可以使用FieldByName,從指定的成員名獲取具體值,vlret:= vl.FieldByName(vlt.Field(i).Name)
			fmt.Println("成員名:", vlt.Field(i).Name, " 類型:", vlt.Field(i).Type, " 數(shù)值:", vl.Field(i))
			//如是字符串種類,又可以修改,CanSet屬性為true,則進(jìn)行修改。
			if vl.Field(i).Kind() == reflect.String && vl.Field(i).CanSet() {
				vl.Field(i).SetString("new str")
				fmt.Println("string成員修改后數(shù)值:", vl.Field(i))
			}
			//而tag標(biāo)簽信息都是靜態(tài)的,無(wú)須實(shí)例化結(jié)構(gòu)體,通過(guò)類型vlt可以獲取到。
			//這句vlt.Field(i).Tag.Lookup("id")就是枚舉出每一個(gè)成員的tag標(biāo)簽,看里面是否有id這個(gè)key,并返回它的value值
			if idtag, b := vlt.Field(i).Tag.Lookup("id"); b {
				fmt.Println("tag id=", idtag)
			}
			if numtag, b := vlt.Field(i).Tag.Lookup("num"); b {
				fmt.Println("tag num=", numtag)
			}
		}
	}
}

func main() {
	var price float64 = 3.14
	var age int64 = 5
	bd := Userinfo{100, "andy"}
	ns := struct { //定義一個(gè)無(wú)名結(jié)構(gòu)體
		id   int
		addr string
	}{2, "aa"}
	GetReflickInfo(price)
	GetReflickInfo(&age) //把變量地址傳遞,所以可以修改。
	GetReflickInfo(&bd)  //把結(jié)構(gòu)體地址傳遞,所以可以修改。
	fmt.Println(bd)      //打印出修改后的結(jié)構(gòu)體變量
	GetReflickInfo(ns)
}


責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2021-08-12 07:49:24

SQL遞歸用法

2022-05-17 08:02:55

GoTryLock模式

2021-07-16 22:43:10

Go并發(fā)Golang

2022-06-09 08:41:17

Go網(wǎng)絡(luò)庫(kù)Gnet

2021-04-30 09:04:11

Go 語(yǔ)言結(jié)構(gòu)體type

2023-12-05 07:14:27

AIGo

2021-11-15 10:29:39

Go語(yǔ)言類型

2020-12-31 09:06:44

Go語(yǔ)言Reflect

2022-01-02 08:43:46

Python

2022-02-07 11:01:23

ZooKeeper

2021-04-20 06:12:09

Swift 反射 Mirror反射機(jī)制

2021-08-01 07:19:16

語(yǔ)言OpenrestyNginx

2022-06-30 22:53:18

數(shù)據(jù)結(jié)構(gòu)算法

2021-10-26 10:40:26

代理模式虛擬

2021-12-04 22:05:02

Linux

2022-03-01 08:31:37

volatile變量編譯器

2021-07-06 08:59:18

抽象工廠模式

2023-11-28 08:29:31

Rust內(nèi)存布局

2023-01-03 08:31:54

Spring讀取器配置

2021-07-02 09:45:29

MySQL InnoDB數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产一区喷水| 91tv亚洲精品香蕉国产一区7ujn| 国内外成人免费在线视频| 国产理论在线观看| 国产成人综合在线| 久久久久久久网站| 1024手机在线观看你懂的| 韩国一区二区三区视频| 欧美日韩精品中文字幕| 亚洲一区二区三区免费观看| www.天堂av.com| 免费在线亚洲| 美女精品视频一区| 美女洗澡无遮挡| 欧洲一区在线| 91国在线观看| 国产精品成人久久电影| 幼a在线观看| caoporen国产精品视频| 国产专区精品视频| 五月婷婷视频在线| 欧美91视频| 伊人久久大香线蕉av一区二区| 杨幂一区二区国产精品| 精品日韩视频| 精品久久久久国产| www.99riav| 老司机免费在线视频| 久久一区二区视频| 成人欧美视频在线| 国产一区二区三区三州| 久久综合中文| 欧美极品少妇xxxxⅹ裸体艺术| 一本在线免费视频| 神马久久一区二区三区| 精品国产免费一区二区三区四区| 九色porny自拍| 欧美性suv| 亚洲成va人在线观看| 日本特级黄色大片| 1pondo在线播放免费| 久久久亚洲高清| 好吊妞www.84com只有这里才有精品| av中文字幕在线免费观看| 日本人妖一区二区| 日韩男女性生活视频| 1级黄色大片儿| 亚洲午夜伦理| 久久久久久国产精品| 伊人在线视频观看| 91精品久久久久久久久久不卡| 在线成人激情黄色| 中文字幕伦理片| 欧美精品一二| 在线国产精品视频| 五月婷婷综合激情网| 日韩激情一区| xxxx欧美18另类的高清| 男人天堂资源网| 午夜欧美在线| 另类色图亚洲色图| 麻豆疯狂做受xxxx高潮视频| 亚洲婷婷免费| 欧美最顶级丰满的aⅴ艳星| 国产微拍精品一区| 日韩国产精品91| 国产精品视频999| 国产巨乳在线观看| 国产精品亚洲一区二区三区妖精| 96国产粉嫩美女| 亚洲精品久久久久久久久久久久久久| 国产91露脸合集magnet| 国产一区二区三区黄| 全部免费毛片在线播放网站| 国产香蕉久久精品综合网| 亚洲欧美日韩国产yyy| 亚洲精品传媒| 亚洲综合在线第一页| 秋霞无码一区二区| 激情开心成人网| 4hu四虎永久在线影院成人| 成人三级做爰av| 女仆av观看一区| 一区二区亚洲欧洲国产日韩| 永久久久久久久| 永久亚洲成a人片777777| 久久久亚洲精选| 亚洲欧美自拍视频| 韩国女主播成人在线观看| 成人女人免费毛片| 第九色区av在线| 亚洲精品视频在线观看网站| 精品无码国模私拍视频| jizz欧美| 亚洲大胆人体视频| 肉色超薄丝袜脚交69xx图片| 激情婷婷欧美| 国产精品视频白浆免费视频| 99久久夜色精品国产亚洲| 99久久er热在这里只有精品15| 日韩影院一区| 激情av在线| 在线免费一区三区| 性xxxxxxxxx| 红桃视频在线观看一区二区| 久久久久久久久久久免费| 伊人久久中文字幕| 99re成人在线| 中文字幕久久综合| 日韩电影大全网站| 精品久久久久久无| 男人av资源站| 久久综合九色| 精品在线一区| 婷婷色在线播放| 在线看国产一区| 精品国产一区在线| 亚洲欧美网站在线观看| 国产成人福利视频| 三级网站在线看| 亚洲少妇最新在线视频| 欧美黄色一级片视频| 国产精品巨作av| 久久国产精品影视| 亚洲天堂自拍偷拍| 久久精品夜夜夜夜久久| 日本a在线免费观看| 成人免费91| 色狠狠久久aa北条麻妃| 五月天婷婷激情| www.性欧美| 欧美日韩视频免费| 99视频有精品高清视频| 伊人男人综合视频网| 欧美a∨亚洲欧美亚洲| 成人美女在线视频| 免费极品av一视觉盛宴| 99国内精品久久久久| 日日骚久久av| 影音先锋国产在线| 欧美国产欧美综合| 国产一二三区av| 国内精品久久久久久99蜜桃| 日本欧美中文字幕| 欧美18xxxxx| 日本乱人伦aⅴ精品| 成人影视免费观看| 国产欧美69| 久久精品综合一区| 国产99在线| 日韩黄色av网站| 久久久久久久久久影院| 91在线丨porny丨国产| 自慰无码一区二区三区| 日韩欧美四区| 人人澡人人澡人人看欧美| 欧美色图另类| 欧美在线观看视频一区二区| 日韩女同一区二区三区| 免费人成网站在线观看欧美高清| 色播五月综合| 24小时成人在线视频| 九九精品视频在线| 日韩一卡二卡在线| 色综合天天视频在线观看| 法国空姐电影在线观看| 日韩电影网1区2区| 一区精品视频| 视频在线观看免费影院欧美meiju| www.99久久热国产日韩欧美.com| 国内精品久久久久久久久久| 亚洲午夜激情网站| 久久精品无码一区| 免费av网站大全久久| 亚洲av首页在线| 成人涩涩网站| 国产成人精品免高潮在线观看| 亚洲搞黄视频| 亚洲爱爱爱爱爱| 国产污视频网站| 亚洲视频精选在线| 亚洲av成人片色在线观看高潮| 翔田千里一区二区| 欧美日韩一级在线| 午夜精品福利影院| 国产一区私人高清影院| 丁香花电影在线观看完整版| 亚洲一区999| 精品国产乱码一区二区三| 精品国产31久久久久久| 少妇一级黄色片| 盗摄精品av一区二区三区| 久久久久久香蕉| 欧美国产91| 视频一区国产精品| 久久av网站| 国产99久久精品一区二区 夜夜躁日日躁 | 国产精品毛片久久| 国产一区二区不卡视频| 涩涩涩久久久成人精品| 国内精品伊人久久| 欧美性天天影视| 日韩精品在线视频美女| 国产99对白在线播放| 日韩欧美国产免费播放| 日韩欧美中文字幕视频| 国产欧美日韩久久| 大乳护士喂奶hd| 国产一区二区三区黄视频 | 亚洲午夜精品一区二区三区| 高潮久久久久久久久久久久久久| 国产精品嫩草视频| 男人av在线播放| 欧美极品少妇与黑人| 亚洲s色大片| 亚洲一级免费视频| 三级毛片在线免费看| 欧美r级电影在线观看| 亚洲综合精品在线| 色综合天天性综合| 久草手机在线观看| 午夜视频在线观看一区二区三区| 五月综合色婷婷| 国产欧美精品日韩区二区麻豆天美| 五十路六十路七十路熟婆 | 欧美老女人在线| 五月天激情国产综合婷婷婷| 亚洲综合视频在线| 侵犯稚嫩小箩莉h文系列小说| 中文字幕精品一区二区三区精品| 人妻无码一区二区三区| heyzo一本久久综合| 国产国语老龄妇女a片| 国产一区二区导航在线播放| 亚洲欧美国产中文| 美女视频网站黄色亚洲| 青青草av网站| 丝袜美腿成人在线| 999香蕉视频| 亚洲欧美日韩精品一区二区| 男女视频网站在线观看| 亚洲成人在线| 精品视频在线观看一区| 精品二区视频| 免费观看国产精品视频| 在线 亚洲欧美在线综合一区| 999一区二区三区| 很黄很黄激情成人| 免费人成自慰网站| 亚洲伦伦在线| 无码aⅴ精品一区二区三区浪潮| 亚洲一区图片| 国产一区二区三区精彩视频| 免费精品视频| 91色国产在线| 免费美女久久99| 中文字幕丰满乱码| 国产成人综合亚洲网站| 污网站免费观看| 2023国产精品视频| 免费看黄色三级| 亚洲同性同志一二三专区| 久久中文免费视频| 亚洲一级在线观看| 国产精品男女视频| 欧美性大战久久久久久久| 一级特黄aaa大片| 日韩欧美精品在线| 亚洲av成人精品毛片| 一区二区三区四区在线观看视频| 日本电影全部在线观看网站视频| 欧美成人免费网| 538视频在线| 国产精品高潮呻吟视频| 91成人app| 精品一区二区三区视频日产| 国产探花一区在线观看| 免费看污污视频| 在线视频精品| 三级a在线观看| 国产精品自拍三区| 大地资源二中文在线影视观看 | 国产高清免费在线| 激情视频一区| 天天色综合天天色| 成人禁用看黄a在线| 中文字幕成人动漫| 一区二区三区在线视频播放| 精品成人av一区二区在线播放| 欧美三级中文字幕在线观看| 亚洲高清视频网站| 最近2019中文字幕一页二页| 超碰在线网站| 国产精品高潮呻吟久久av野狼| 爱爱精品视频| 亚洲.欧美.日本.国产综合在线| 欧美深夜福利| 最近中文字幕一区二区| 成人avav在线| 中文乱码字幕高清一区二区| 福利二区91精品bt7086| 国产熟女一区二区三区四区| 亚洲嫩模很污视频| 青春草在线视频| 国产精品丝袜久久久久久高清| 9l亚洲国产成人精品一区二三| 水蜜桃一区二区三区| 国内精品美女在线观看 | 激情视频亚洲| 日韩免费电影一区二区三区| 亚洲三级免费| 免费不卡av网站| 国产精品久久久久久亚洲伦| 精品成人av一区二区在线播放| 日韩一级完整毛片| 亚洲欧美视频一区二区| 国产精品成av人在线视午夜片| 欧美亚洲色图校园春色| 日韩精品免费一区| 青青草一区二区三区| 国精产品一区一区三区免费视频| 亚洲制服丝袜av| 性做久久久久久久久久| 精品国产欧美一区二区三区成人| 伊人久久视频| 久久久久久久久久码影片| 国产精品激情电影| 久久久久久久久久影视| 亚洲人成在线观看一区二区| 一区二区三区日| 亚洲热线99精品视频| 电影网一区二区| 久久综合九色欧美狠狠| 在线视频日韩| 国产精品无码一区二区三区免费 | 国产成人精品白浆久久69| 最近2019年手机中文字幕| 一呦二呦三呦精品国产| 欧美精品一区在线| 在线亚洲一区| 日本少妇色视频| 欧美日韩亚洲高清| 亚洲欧美日本在线观看| 欧洲美女免费图片一区| 亚洲美女15p| 大香煮伊手机一区| 国产欧美一区视频| 国产天堂第一区| www.欧美免费| 久久久久亚洲精品中文字幕| 日本a级片在线观看| 国产白丝网站精品污在线入口| 久久久久久国产精品视频| 亚洲国产精品久久久| а√天堂中文资源在线bt| 精品视频导航| 日韩中文字幕1| 国产jizz18女人高潮| 欧美日本在线视频| 怡红院av在线| 国偷自产av一区二区三区小尤奈| 老鸭窝毛片一区二区三区| 五月婷婷六月香| 欧美一区二区网站| 欧美1234区| 欧美日韩免费高清| 麻豆精品视频在线观看免费| 午夜精品一区二区三区视频| 精品国产乱码久久久久久免费| 牛牛精品一区二区| 亚洲 国产 欧美一区| 国产精品资源在线观看| www.天天色| 在线精品播放av| 三级欧美日韩| 能在线观看的av网站| 亚洲男人的天堂在线观看| 黄色小视频免费观看| 国产激情视频一区| 亚洲欧美日韩高清在线| 三级电影在线看| 欧美久久久久免费| 国产免费拔擦拔擦8x高清在线人| 日本一区免费观看| 国产高清在线精品| 婷婷激情五月网| 另类图片亚洲另类| 午夜精品福利影院| 欧美体内she精高潮| 色婷婷综合久久久久中文一区二区| 黄色一级大片在线免费看产| 精品伦精品一区二区三区视频| 蜜乳av一区二区| 97人人澡人人爽人人模亚洲| 色婷婷综合久久久久| 动漫3d精品一区二区三区乱码| 激情五月婷婷久久| 亚洲一区在线看| 永久av在线| 麻豆av一区二区三区久久|