Heim >Backend-Entwicklung >Golang >Wie konvertiere ich eine Schnittstelle{} sicher in ein int in Go?

Wie konvertiere ich eine Schnittstelle{} sicher in ein int in Go?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-15 08:06:17987Durchsuche

How to Safely Convert an interface{} to an int in Go?

Konvertieren von interface{} in int in Go

Ihr Go-Code versucht, einen interface{}-Wert direkt in einen int zu konvertieren, aber der Die Konvertierung schlägt aufgrund von Typbeschränkungen fehl. Die Fehlermeldung weist darauf hin, dass für diese Konvertierung eine Typzusicherung erforderlich ist.

Lassen Sie uns das Problem und seine Lösung verstehen:

Problem:

Im Im bereitgestellten Code ist die Variable val vom Typ interface{}. Dies bedeutet, dass es Werte jeglicher Art enthalten kann. Die Zuweisung iAreaId := int(val) versucht, den interface{}-Wert in einen int-Wert umzuwandeln. Diese direkte Konvertierung ist jedoch in Go nicht zulässig.

Lösung:

Um einen Interface{}-Wert ordnungsgemäß in einen bestimmten Typ zu konvertieren, ist eine Typzusicherung erforderlich. Eine Typzusicherung gibt dem Compiler einen expliziten Hinweis darauf, dass Sie den Wert in einen bestimmten Typ konvertieren möchten.

Um val als int zu bestätigen, verwenden Sie eine der folgenden Syntaxen:

  1. Panikanfällig:

    iAreaId := val.(int)

    Wenn val nicht in int konvertiert werden kann, ist dies der Fall Ansatz wird in Panik geraten.

  2. Keine Panik:

    iAreaId, ok := val.(int)

    Dieser Ansatz weist iAreaId dem konvertierten Wert und ok einem booleschen Wert zu, der angibt, ob Die Konvertierung war erfolgreich. Wenn die Konvertierung fehlschlägt, ist ok falsch.

Verstehen der Konvertierungsregeln:

Direkte Konvertierung von Schnittstelle{} in einen bestimmten Typ ist gemäß den Go-Sprachspezifikationen nicht zulässig. Eine Typzusicherung ist erforderlich, um diese Regeln außer Kraft zu setzen und den Wert explizit in den gewünschten Typ umzuwandeln.

Das obige ist der detaillierte Inhalt vonWie konvertiere ich eine Schnittstelle{} sicher in ein int in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn