Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Menentukan Jenis Dasar `antara muka{}` Go?

Bagaimanakah Saya Boleh Menentukan Jenis Dasar `antara muka{}` Go?

Mary-Kate Olsen
Lepaskan: 2024-12-04 10:39:11
asal
1323 orang telah melayarinya

How Can I Determine the Underlying Type of Go's `interface{}`?

Menyingkap Sifat Sebenar antara muka{}: Panduan Komprehensif untuk Penentuan Jenis

Apabila bekerja dengan jenis antara muka serba boleh Go{}, adalah penting untuk menavigasi fleksibiliti yang wujud. Untuk menggunakan antara muka{} dengan berkesan, kami menyelidiki soalan menarik anda:

1. Membongkar Jenis "Sebenar" w:

Taip Tukar kepada Penyelamat:

switch v := w.(type) {
  case int:
    fmt.Println("Type: integer")
  case string:
    fmt.Println("Type: string")
}
Salin selepas log masuk

2. Mengekstrak Perwakilan Rentetan Jenis:

Menggunakan TypeName:

fmt.Println(reflect.TypeOf(w).Name())
Salin selepas log masuk

3. Menukar Nilai Menggunakan Perwakilan Rentetan Jenis:

Taip Penegasan dengan TypeName:

typeName := reflect.TypeOf(w).Name()
if typeName == "int" {
  value := w.(int)
} else if typeName == "string" {
  value := w.(string)
}
Salin selepas log masuk

Dalam contoh khusus anda, anda boleh mendapatkan jenis "sebenar" daripada w menggunakan suis jenis:

switch w := weirdFunc(5).(type) {
  case int:
    fmt.Println("w is an integer")
  case string:
    fmt.Println("w is a string")
}
Salin selepas log masuk

Sebagai alternatif, anda boleh memanfaatkan pakej reflect untuk mendapatkan semula nama jenis itu sendiri:

typeName := reflect.TypeOf(w).Name()
fmt.Println("w's type name:", typeName)
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Jenis Dasar `antara muka{}` Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan