Was sind die wichtigsten Unterschiede zwischen ist:Was ist der Unterschied zwischen Typkonvertierung und Typassertion?
v = t.(aType) // type assertion
v = aType(t) // type conversion
Wo soll ich Typ Behauptung oder Typumwandlung verwenden?
Was sind die wichtigsten Unterschiede zwischen ist:Was ist der Unterschied zwischen Typkonvertierung und Typassertion?
v = t.(aType) // type assertion
v = aType(t) // type conversion
Wo soll ich Typ Behauptung oder Typumwandlung verwenden?
Eine Typbestätigung behauptet, dass t
(ein Schnittstellentyp) tatsächlich ein aType
und t
ein aType
ist; nämlich der eine in der t
Schnittstelle eingewickelt. Z.B. Wenn Sie wissen, dass Ihr var reader io.Reader
tatsächlich ein *bytes.Buffer
ist, können Sie var br *bytes.Buffer = reader.(*bytes.Buffer)
tun.
Eine Typkonvertierung konvertiert einen (Nicht-Schnittstellen-) Typ in einen anderen, z. a var x uint8
zu und int64 wie var id int64 = int64(x)
. Faustformel Faustregel: Wenn Sie Ihren konkreten Typ in eine Schnittstelle einbinden müssen und Ihren konkreten Typ zurück haben möchten, verwenden Sie eine Typbestätigung (oder geben Sie einen Schalter ein). Wenn Sie einen konkreten Typ in einen anderen konvertieren müssen, verwenden Sie eine Typumwandlung.
"und t wird ein aType" - Können Sie das näher ausführen? 't' ist nicht modifiziert? – nemo
@nemo Ich denke, er würde 'v' sagen, nicht' t' –
@LucianoQ: Nein, es ist 't' nicht' v'. @nemo: Nein "t" wird nicht durch eine Typzusicherung oder eine Typumwandlung geändert. Ich empfehle dringend die Tour of Go und die Sprachspezifikation danach. – Volker