Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Anda Boleh Menyimpan Kedua-dua Nilai Rentetan dan Int dalam Struktur Go?

Bagaimanakah Anda Boleh Menyimpan Kedua-dua Nilai Rentetan dan Int dalam Struktur Go?

Patricia Arquette
Patricia Arquetteasal
2024-12-03 10:58:09939semak imbas

How Can You Store Both String and Int Values in a Go Struct?

Menyimpan Kedua-dua Nilai Rentetan dan Int dalam Struktur Go

Dalam Go, tidak mungkin untuk menyimpan kedua-dua nilai rentetan dan int secara langsung dalam medan struct tunggal. Ini disebabkan oleh sistem jenis bahasa yang kuat, yang memerlukan pembolehubah mempunyai jenis yang khusus dan jelas.

Penyelesaian Kemungkinan

Untuk mengatasi had ini, anda perlu beberapa pilihan:

  1. Tukar Input Secara Dinamik: Anda boleh tukar input int kepada rentetan apabila diperlukan dan tukarkannya semula kepada int semasa memproses.
  2. Tentukan Berbilang Struktur: Anda boleh mentakrifkan struct berasingan untuk jenis input yang berbeza, seperti testCaseString dan testCaseInt.
  3. Pelaksanaan Antara Muka: Sejak Go 1.18, anda boleh menggunakan antara muka sebagai penyelesaian. Walaupun Go tidak mempunyai jenis jumlah asli, ia membenarkan anda menentukan antara muka yang boleh dilaksanakan oleh pelbagai jenis.

Pelaksanaan Antara Muka dalam Go 1.18 dan Beyond

Menggunakan antara muka, anda boleh mencipta jenis yang boleh memegang kedua-dua nilai rentetan dan int. Berikut ialah contoh:

type Input interface {
    IsValid() bool
    Value() interface{}
}

type TestCaseBool struct {
    input   bool
    isValid bool
}

func (tc TestCaseBool) IsValid() bool {
    return tc.isValid
}

func (tc TestCaseBool) Value() interface{} {
    return tc.input
}

Anda kini boleh menggunakan struct TestCaseBool untuk menyimpan sama ada nilai boolean atau antara muka kosong.

Nota: Penyelesaian ini memerlukan Go 1.18 atau lebih tinggi untuk bekerja.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Menyimpan Kedua-dua Nilai Rentetan dan Int dalam Struktur 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