Heim >Backend-Entwicklung >Golang >Wie kann ich optionale Zeichenfolgen in Go am besten darstellen?

Wie kann ich optionale Zeichenfolgen in Go am besten darstellen?

Susan Sarandon
Susan SarandonOriginal
2024-12-20 06:01:09310Durchsuche

How Can I Best Represent Optional Strings in Go?

Idiomatisches Go: Darstellung optionaler Zeichenfolgen

Das Fehlen von Variantentypen in Go stellt eine Herausforderung für die Modellierung von Werten dar, die sowohl in als auch in Abwesenheit vorhanden sein können oder Gegenwartsform. Dies ist besonders relevant für Strings, die nil nicht als Mitglied akzeptieren können.

Optionen zur Modellierung optionaler Strings

  1. String: Obwohl die Verwendung eines Zeigers auf einen String (string) funktionieren könnte, führt dies zu Schwierigkeiten bei Vorgängen wie dem Verweisen auf einen String Literale.
  2. Wrapper: Das Kapseln der Zeichenfolge und ihres Anwesenheitsstatus in einem Wrapper ist eine praktikable Lösung, weicht jedoch vom Ziel ab, nur eine Zeichenfolge zu verwenden.
  3. Zeichenfolge mit spezifischem Nullwert:

    a. Leerer String (""): Die Festlegung des leeren Strings als Nullelement erleichtert die Initialisierung und den Umgang mit fehlenden Werten in Karten.

    b. Ungültige UTF-8-Bytesequenz: In Fällen, in denen leere Zeichenfolgen gültig sind, kann eine kurze ungültige UTF-8-Bytesequenz (z. B. „xff“) verwendet werden, um den Nullwert darzustellen und gleichzeitig gültige Textzeichenfolgen zuzulassen.

Es wird ein ungültiges UTF-8-Byte verwendet Sequenz

  1. Definieren Sie eine Konstante wie const Null = „xff“, um den Nullwert darzustellen.
  2. Dieser Ansatz ermöglicht sowohl leere Zeichenfolgen als auch gültige Texte als optionale Werte .
  3. Mit der Funktion utf8.ValidString() kann überprüft werden, ob eine Zeichenfolge gültig ist Text.

Beispiel:

const Null = "\xff"

func main() {
    fmt.Println(utf8.ValidString(Null)) // false

    s := Null
    fmt.Println([]byte(s)) // [255]
    fmt.Println(s == Null) // true
    s = "notnull"
    fmt.Println(s == Null) // false
}

Das obige ist der detaillierte Inhalt vonWie kann ich optionale Zeichenfolgen in Go am besten darstellen?. 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