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
Mary-Kate Olsenasal
2024-12-04 10:39:111251semak imbas

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")
}

2. Mengekstrak Perwakilan Rentetan Jenis:

Menggunakan TypeName:

fmt.Println(reflect.TypeOf(w).Name())

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)
}

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")
}

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)

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!

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