Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mewakili Rentetan Pilihan Terbaik dalam Go?

Bagaimanakah Saya Boleh Mewakili Rentetan Pilihan Terbaik dalam Go?

Susan Sarandon
Susan Sarandonasal
2024-12-20 06:01:09313semak imbas

How Can I Best Represent Optional Strings in Go?

Idiomatik Go: Mewakili Rentetan Pilihan

Ketiadaan jenis varian dalam Go menimbulkan cabaran untuk nilai pemodelan yang boleh wujud sama ada tanpa kehadiran atau bentuk sekarang. Ini amat relevan untuk rentetan, yang tidak boleh menerima nol sebagai ahli.

Pilihan untuk Memodelkan Rentetan Pilihan

  1. rentetan: Walaupun menggunakan penuding ke rentetan (rentetan) boleh berfungsi, ia menimbulkan kejanggalan dalam operasi seperti merujuk literal rentetan.
  2. Pembungkus: Merangkum rentetan dan status kehadirannya dalam pembungkus ialah penyelesaian yang berdaya maju, tetapi ia menyimpang daripada matlamat menggunakan hanya rentetan.
  3. rentetan dengan Nilai Nul Khusus:

    a. Rentetan Kosong (""): Menetapkan rentetan kosong sebagai elemen nol memberikan kemudahan untuk pemulaan dan pengendalian nilai yang tiada daripada peta.

    b. Urutan UTF-8 Bait Tidak Sah: Untuk kes di mana rentetan kosong adalah sah, urutan UTF-8 bait pendek yang tidak sah (cth., "xff") boleh digunakan untuk mewakili nilai nol sambil membenarkan rentetan teks yang sah.

Menggunakan UTF-8 Byte Tidak Sah Jujukan

  1. Tentukan pemalar, seperti const Null = "xff", untuk mewakili nilai nol.
  2. Pendekatan ini membenarkan kedua-dua rentetan kosong dan teks yang sah sebagai nilai pilihan .
  3. Fungsi utf8.ValidString() boleh digunakan untuk menyemak sama ada rentetan adalah sah teks.

Contoh:

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
}

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mewakili Rentetan Pilihan Terbaik dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn