第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

檢查結(jié)構(gòu)在運(yùn)行時(shí)是否具有結(jié)構(gòu)嵌入

檢查結(jié)構(gòu)在運(yùn)行時(shí)是否具有結(jié)構(gòu)嵌入

Go
達(dá)令說 2022-06-01 16:13:43
假設(shè)我有以下結(jié)構(gòu):type Room struct {  BaseModel}func main() {  r := Room{}}在代碼的其他地方說我獲得了一個(gè)對(duì)象 r。它可能是Room或其他東西。我想在運(yùn)行時(shí)檢查 r 的類(在這種情況下Room)是否具有 BaseModel 的結(jié)構(gòu)嵌入。那可能嗎?
查看完整描述

2 回答

?
墨色風(fēng)雨

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊

是的,您可以使用反射在運(yùn)行時(shí)檢查它。這是一個(gè)非常簡(jiǎn)單的示例,用于打印嵌入結(jié)構(gòu)reflect.TypeOf的每個(gè)字段的類型,并打印字段是否為匿名() - 這是您要求的一個(gè)很好的指標(biāo):BarFooreflect.ValueOftrue


package main


import (

    "fmt"

    "reflect"

)


type Foo struct {

    foo string

}


type Bar struct {

    Foo

    bar string

}


func main() {

    test := Bar{}

    t := reflect.TypeOf(test)


    for i := 0; i < t.NumField(); i++ {

        fmt.Print(t.Field(i).Type, " ")

        fmt.Println(reflect.ValueOf(t.Field(i).Anonymous))

    }

}

這是操場(chǎng)上的代碼:https: //play.golang.org/p/zNWxZUzq_RS


你不會(huì)問你到底想用這些信息做什么,所以將你指向reflect文檔以進(jìn)行更高級(jí)的使用。


查看完整回答
反對(duì) 回復(fù) 2022-06-01
?
拉丁的傳說

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊

檢查 的Anonymous字段reflect.StructField。


func embedsBaseModel(v interface{}) bool {

    rt := reflect.TypeOf(v)

    if rt.Kind() != reflect.Struct {

        return false

    }


    base := reflect.TypeOf(BaseModel{})

    for i := 0; i < rt.NumField(); i++ {

        if sf := rt.Field(i); sf.Type == base && sf.Anonymous {

            return true

        }

    }

    return false

}

https://play.golang.com/p/-6flZcdSYwj


查看完整回答
反對(duì) 回復(fù) 2022-06-01
  • 2 回答
  • 0 關(guān)注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)