ホームページ >バックエンド開発 >Golang >Go でオプションの文字列を最適に表現するにはどうすればよいですか?

Go でオプションの文字列を最適に表現するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-20 06:01:09334ブラウズ

How Can I Best Represent Optional Strings in Go?

慣用的な Go: オプションの文字列の表現

Go にはバリアント型が存在しないため、存在しない値のいずれかに存在する可能性のある値のモデリングに課題が生じますまたは現在形。これは、メンバーとして nil を受け入れることができない文字列に特に関係します。

オプションの文字列をモデリングするためのオプション

  1. string: 文字列 (string) へのポインターの使用は機能しますが、次のような操作で不自然さが生じます。文字列リテラルを参照します。
  2. Wrapper: 文字列とその存在ステータスをラッパーにカプセル化することは実行可能な解決策ですが、文字列のみを使用するという目的から逸脱します。
  3. 特定の Null を含む文字列値:

    a。 空の文字列 (""): 空の文字列を null 要素として指定すると、初期化とマップに存在しない値の処理が容易になります。

    b. 無効な UTF-8 バイト シーケンス: 空の文字列が有効な場合、有効なテキスト文字列を許可しながら、短い無効な UTF-8 バイト シーケンス (例: "xff") を使用して null 値を表すことができます。

無効な UTF-8 バイトの使用シーケンス

  1. null 値を表す定数 (const Null = "xff" など) を定義します。
  2. このアプローチでは、空の文字列と有効なテキストの両方をオプションの値として使用できます。 .
  3. utf8.ValidString() 関数を使用して、文字列が有効かどうかを確認できます。 text.

例:

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
}

以上がGo でオプションの文字列を最適に表現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。