Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah Saya Boleh Menyimpan Kedua-dua Rentetan dan Integer dalam Go Struct Menggunakan Antara Muka?
Menggabungkan Nilai Rentetan dan Integer dalam Struktur Go: Menggunakan Antara Muka
Dalam Go, anda mungkin menghadapi senario di mana anda memerlukan struktur data untuk menyimpan nilai rentetan dan integer. Pertimbangkan takrifan struktur berikut:
type testCase struct { input string isValid bool }
Walau bagaimanapun, anda mungkin merasa senang untuk mengendalikan input sama ada sebagai rentetan atau integer bergantung pada kes penggunaan. Untuk mencapai matlamat ini, anda boleh menggunakan antara muka, seperti yang ditunjukkan di bawah:
type Input interface { String() string }
Pelaksanaan Antara Muka untuk Jenis Rentetan dan Integer
Anda boleh melaksanakan antara muka Input untuk kedua-duanya rentetan dan integer:
type StringInput string func (s StringInput) String() string { return string(s) } type IntegerInput int func (i IntegerInput) String() string { return strconv.Itoa(int(i)) }
Menggunakan Antara Muka Input dalam Anda Struct
Kini, anda boleh mengubah suai struct testCase anda untuk menggunakan antara muka Input:
type testCase struct { input Input isValid bool }
Kod Contoh
Berikut ialah contoh bagaimana anda boleh menggunakan antara muka ini untuk menyimpan dan mendapatkan kedua-dua rentetan dan integer values:
package main import ( "fmt" "strconv" ) type Input interface { String() string } type StringInput string func (s StringInput) String() string { return string(s) } type IntegerInput int func (i IntegerInput) String() string { return strconv.Itoa(int(i)) } type testCase struct { input Input isValid bool } func main() { // Create a test case with a string input testString := testCase{ input: StringInput("Hello, world!"), isValid: true, } // Print the input as a string fmt.Println(testString.input.String()) // Output: Hello, world! // Create a test case with an integer input testInt := testCase{ input: IntegerInput(123), isValid: true, } // Print the input as a string fmt.Println(testInt.input.String()) // Output: 123 }
Dengan memanfaatkan antara muka Input, anda boleh mengendalikan kedua-dua nilai rentetan dan integer dengan lancar dalam struct Go anda, memberikan lebih fleksibiliti dan kebolehgunaan semula kod.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyimpan Kedua-dua Rentetan dan Integer dalam Go Struct Menggunakan Antara Muka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!