Funktionen mit anonymer Struktur als Parameter exportieren [Wert (Typ struct {…}) kann nicht als Typ struct {…} im Argument zu package.Func verwendet werden]

Hier ist ein Stück Code play.google.org das läuft ohne problem:

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{}{})
}

Allerdings, wenn dasPrintAnonymous() -Funktion existiert in einem anderen Paket (sagen wir,temp), der Code funktioniert nicht:

cannot use value (type struct { i int; s string })
as type struct { i int; s string } in argument to temp.PrintAnonymous

Meine Frage ist:

Gibt es eine Möglichkeit, eine (öffentliche) Funktion mit anonymer Struktur als Parameter aufzurufen (a.k.a.PrintAnonymous() über)Eine Funktion mit leerer Struktur als Parameter (a.k.a.PrintAnonymous2() oben) kann auch dann aufgerufen werden, wenn es in einem anderen Paket vorhanden ist. Ist das ein Sonderfall?

Nun, ich weiß, dass ich das @ immer benennen kastruct Um das Problem zu lösen, bin ich nur neugierig und frage mich, warum das anscheinend nicht erlaubt ist.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage