Mendapatkan Jenis Nilai Antara Muka "Sebenar" dalam Go
Jenis antara muka Go{} ialah cara serba boleh untuk mengendalikan nilai apa-apa jenis . Walau bagaimanapun, menentukan jenis sebenar nilai antara muka{} boleh menjadi rumit. Berikut ialah beberapa pendekatan:
Jenis Penegasan:
Jenis penegasan, seperti yang ditunjukkan dalam contoh yang disediakan, adalah kaedah yang paling mudah. Menggunakan . (titik), anda boleh cuba menghantar nilai antara muka kepada jenis tertentu. Contohnya, jika tmp, ok := w.(int) cuba menghantar w kepada int, dan jika berjaya, simpan nilai dalam tmp sambil menetapkan ok kepada benar.
Suis Jenis:
Suis jenis menyediakan cara yang lebih komprehensif untuk mengendalikan berbilang jenis. Sama seperti pernyataan kes suis, suis jenis boleh menyemak jenis nilai antara muka{} dan melaksanakan laluan kod yang berbeza berdasarkan jenis. Sebagai contoh, coretan kod berikut menguji jika myInterface ialah int, float64 atau rentetan:
switch v := myInterface.(type) { case int: fmt.Printf("Integer: %v", v) case float64: fmt.Printf("Float64: %v", v) case string: fmt.Printf("String: %v", v) default: fmt.Printf("Unknown type") }
Mendapatkan Perwakilan Rentetan Jenis:
Untuk mendapatkan perwakilan rentetan jenis, gunakan pakej mencerminkan. Panggil reflect.TypeOf(value).Name() pada nilai antara muka untuk mendapatkan nama jenisnya sebagai rentetan.
typeName := reflect.TypeOf(w).Name()
Menukar Nilai Menggunakan Perwakilan Jenis:
Pada masa ini, tiada cara langsung untuk menukar nilai menggunakan perwakilan jenis rentetannya. Walau bagaimanapun, perpustakaan luaran, seperti github.com/bluele/gcache, boleh membantu dengan tugas ini dengan menyediakan fungsi untuk menukar rentetan kepada jenis.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Jenis Dasar Nilai `antara muka{}` Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!