Rumah > pembangunan bahagian belakang > Golang > Bolehkah Reflection Mendapatkan Nama Pembolehubah daripada Nilainya dalam Go?

Bolehkah Reflection Mendapatkan Nama Pembolehubah daripada Nilainya dalam Go?

Barbara Streisand
Lepaskan: 2024-11-26 11:45:11
asal
1042 orang telah melayarinya

Can Reflection Retrieve a Variable's Name from Its Value in Go?

Bolehkah saya Mendapatkan Nama Pembolehubah daripada Nilainya?

Soalan: Dalam konteks sistem templat, bagaimana saya boleh mendapatkan pembolehubah nama berdasarkan nilainya semata-mata menggunakan pantulan? Ini akan membolehkan saya menggantikan nilai pemegang tempat dalam templat dengan nama pembolehubah sebenar.

Menggunakan Refleksi:

Saya cuba menggunakan pantulan untuk mendapatkan semula nama pembolehubah, tetapi Saya tidak berjaya. Inilah kod yang saya cuba:

onevar := "something"
other := "something else"

var msg string
sa := []string{onevar, other}
for _, v := range sa {
    vName := reflect.TypeOf(v).Name()  // Attempt to get the variable name
    vName = fmt.Sprintf("{{%s}}", vName)  // Prefix the name with "{{" and "}}"
    msg = strings.Replace(msg, vName, v, -1)  // Replace the placeholder with the actual value
}
Salin selepas log masuk

Pendekatan ini tidak menghasilkan hasil yang diingini kerana slice sa hanya mengandungi nilai pembolehubah, bukan nama pembolehubah.

Jawapan:

Refleksi tidak boleh digunakan untuk mendapatkan semula nama pembolehubah dalam senario ini. Potongan sa mengandungi nilai pembolehubah, bukan nama pembolehubah itu sendiri. Untuk mencapai matlamat anda untuk menggantikan ruang letak dengan nama berubah-ubah, adalah disyorkan untuk menggunakan peta dan bukannya sekeping. Peta boleh mengaitkan nama pembolehubah dengan nilainya, membolehkan penggantian yang cekap dan tepat.

Atas ialah kandungan terperinci Bolehkah Reflection Mendapatkan Nama Pembolehubah daripada Nilainya dalam 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