Экспорт функций с анонимной структурой в качестве параметра [нельзя использовать значение (тип struct {…}) в качестве типа struct {…} в качестве аргумента для package.Func]
Вот кусок кода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
Мой вопрос:
Есть ли способ вызвать (публичную) функцию с анонимной структурой в качестве параметра (a.k.a.PrintAnonymous()
выше)?Функция с пустой структурой в качестве параметра (a.k.a.PrintAnonymous2()
выше) можно вызвать, даже если он существует в другом пакете. Это особый случай?Ну, я знаю, что всегда могу назватьstruct
Чтобы решить проблему, мне просто любопытно по этому поводу, и мне интересно, почему кажется, что это не разрешено.