Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mengakses Jenis Go Struct Tanpa Membuat Contoh?

Bagaimanakah Saya Boleh Mengakses Jenis Go Struct Tanpa Membuat Contoh?

Patricia Arquette
Lepaskan: 2024-10-24 20:52:29
asal
261 orang telah melayarinya

How Can I Access the Type of a Go Struct Without Creating an Instance?

Mengakses Reflect.Type Tanpa Penciptaan Struktur Fizikal

Dalam Go, memuatkan penyelesaian masalah secara dinamik memerlukan mengakses jenis struct tanpa menciptanya secara fizikal . Walaupun penyelesaian sedia ada mewajibkan penciptaan struktur dan pensifaran sebelum pendaftaran jenis, pendekatan yang lebih cekap wujud.

Seseorang boleh memanfaatkan reflect.TypeOf((*Struct)(nil)).Elem() operasi. Dengan mencipta penunjuk sifar, peruntukan ruang dielakkan. Kaedah Elem mendapatkan semula jenis elemen daripada penunjuk, tatasusunan, kepingan, saluran dan peta.

Sebagai contoh, pertimbangkan SolutionRegistry yang disediakan yang membenarkan pemuatan dinamik penyelesai untuk masalah "Projek Euler". Untuk mendaftarkan jenis struct, pelaksanaan semasa memerlukan penciptaan dan pemulaan struct.

<code class="go">type DummySolution struct {
    data [100 * 1024 * 1024 * 1024]uint8
}</code>
Salin selepas log masuk

Untuk mengoptimumkan proses ini, bukannya mencipta contoh DummySolution, seseorang boleh menggunakan reflect .TypeOf((*DummySolution)(nil)).Elem() untuk mendapatkan jenisnya:

<code class="go">func Register(sol Solution) {
    solutionsRegistry.Set(reflect.TypeOf((*sol)(nil)).Elem())
}</code>
Salin selepas log masuk

Teknik ini secara berkesan menghapuskan keperluan untuk instantiasi struktur fizikal sambil mendaftarkan jenisnya untuk pemuatan dinamik masa hadapan .

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Jenis Go Struct Tanpa Membuat Contoh?. 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