Скажем, у меня есть 3 структуры:
type A struct{
Foo map[string]string
}
type B struct{
Foo map[string]string
}
type C struct{
Foo map[string]string
}
, а затем я хочу создать функцию, которая может принимать любую из этих структур:
func handleFoo (){
}
Есть ли способ сделать этос Голангом?Примерно так:
type ABC = A | B | C
func handleFoo(v ABC){
x: = v.Foo["barbie"] // this would be nice!
}
ОК, так что давайте попробуем интерфейс:
type FML interface {
Bar() string
}
func handleFoo(v FML){
z := v.Bar() // this will compile
x: = v.Foo["barbie"] // this won't compile - can't access properties like Foo from v
}
На языке, который поощряет / заставляет составлять, я не могу понять, почему вы не можете получить доступ к таким свойствам, как Foo.