Да, вы можете проверить это во время выполнения, используя отражение. Вот очень простой пример, который использует reflect.TypeOf
для печати типа каждого поля struct Bar
, в которое встраивается struct Foo
, а также reflect.ValueOf
для печати, является ли поле анонимным (true
) или нет - что является хорошим показателем из того, что вы просите:
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))
}
}
Вот код на детской площадке: https://play.golang.org/p/zNWxZUzq_RS
Вы не спрашиваете, что именно вы хотите делать с этой информацией поэтому указываем вам reflect
документацию для более продвинутого использования.