Вот фрагмент кода play.google.org, который работает без проблем:
package main
import (
"fmt"
)
func PrintAnonymous(v struct {
i int
s string
}) {
fmt.Printf("%d: %s\n", v.i, v.s)
}
func PrintAnonymous2(v struct{}) {
fmt.Println("Whatever")
}
func main() {
value := struct {
i int
s string
}{
0, "Hello, world!",
}
PrintAnonymous(value)
PrintAnonymous2(struct{}{})
}
Однако, если PrintAnonymous()
существует в другом пакете (скажем, temp
), код не будет работать:
cannot use value (type struct { i int; s string })
as type struct { i int; s string } in argument to temp.PrintAnonymous
Мой вопрос:
- Есть ли способ вызвать (общедоступную) функцию с анонимной структурой в качестве параметра (например,
PrintAnonymous()
)? - Функция с пустой структурой как параметр (ака
PrintAnonymous2()
выше) может быть вызвана, даже если она существует в другом пакете. Это особый случай?
Ну, я знаю, что я всегда могу назвать struct
для решения проблемы, мне просто интересно, и интересно, почему кажется, что это не разрешено.