Heim >Backend-Entwicklung >Golang >Go: Typzusicherungen – gibt es einen Fehler in der Spezifikation?

Go: Typzusicherungen – gibt es einen Fehler in der Spezifikation?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBnach vorne
2024-02-06 08:35:10886Durchsuche

Go:类型断言 - 规范中是否有错误?

Frageninhalt

go Gibt es einen Fehler in der kanonischen Typzusicherung?

A type assertion used in an assignment statement or initialization of the special form
v, ok = x.(T)
v, ok := x.(T)
var v, ok = x.(T)
var v, ok interface{} = x.(T) // dynamic types of v and ok are T and bool

yields an additional untyped boolean value.

Was bedeutet das letzte Beispiel? var v,好的接口{} = x.(t)?

Ich habe einen Fehler in Go 1.19 erhalten Syntaxfehler: Unerwartete Schnittstelle, erwartet := oder = oder Kommasyntax 错误:意外的接口,期望 := 或 = 或逗号


正确答案


所有这些行都在尝试相同的操作:x 的类型断言以键入 T。值 ok 确定断言是否成功。在您提供的最后一个示例中,唯一的区别是,您没有为 vok 确定类型,而是为两者提供了 interface{} 的类型。将 vok 声明为 interface{} 不会更改它们包含的值。它允许您将它们发送到函数或将它们添加到需要 interface{}

Richtige Antwort

🎜🎜Alle diese Zeilen versuchen dasselbe:x, um T einzugeben. Der Wert ok bestimmt, ob die Behauptung erfolgreich war. Im letzten Beispiel, das Sie bereitgestellt haben, besteht der einzige Unterschied darin, dass Sie, anstatt die Typen für v und ok zu bestimmen, interface{} für beide angegeben haben Typ. Durch die Deklaration von v und ok als interface{} werden die darin enthaltenen Werte nicht geändert. Sie können sie an eine Funktion senden oder einer Sammlung hinzufügen, die einen interface{}-Typ erfordert. Anschließend müssen sie erneut bestätigt werden. 🎜

Das obige ist der detaillierte Inhalt vonGo: Typzusicherungen – gibt es einen Fehler in der Spezifikation?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen