Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah Anda Menyimpan Jenis Data Berbeza dalam Medan Struktur Tunggal dalam Go?

Bolehkah Anda Menyimpan Jenis Data Berbeza dalam Medan Struktur Tunggal dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-11-15 16:27:03767semak imbas

Can You Store Different Data Types in a Single Struct Field in Go?

Mengisytiharkan dan Menggunakan Medan Struct untuk Berbilang Jenis Data dalam Go

Dalam Go, anda boleh mentakrifkan struct untuk mewakili data berkaitan. Walau bagaimanapun, bagaimana jika anda mahu medan struct dapat menyimpan nilai rentetan dan int?

Untuk memahami isu ini dengan lebih baik, pertimbangkan struct berikut:

type testCase struct {
   input   string
   isValid bool
}

Struktur ini direka bentuk untuk menyimpan kes ujian di mana input ialah rentetan dan isValid ialah boolean. Dalam sesetengah senario, anda mungkin mahu membenarkan input sama ada rentetan atau int.

Pada mulanya, anda mungkin mempertimbangkan untuk menukar input int kepada rentetan dan kembali kepada int semasa memproses. Walau bagaimanapun, pendekatan ini tidak cekap dan mudah ralat.

Pilihan lain boleh mentakrifkan dua struktur berasingan, seperti testCaseInt dan testCaseStruct. Ini akan menyelesaikan masalah, tetapi ia membawa kepada pertindihan kod yang tidak perlu.

Adakah mungkin untuk menyimpan jenis data yang berbeza dalam satu medan struct menggunakan antara muka?

Tidak , ia tidak boleh dilakukan dalam versi Go sebelum 1.18. Sistem jenis Go tidak menyokong jenis jumlah, iaitu jenis yang boleh mewakili berbilang variasi data.

Dalam Go 1.18, jenis jumlah akan disokong melalui pengenalan generik. Walau bagaimanapun, sehingga itu, tiada cara terbina dalam untuk mencapai fungsi ini.

Atas ialah kandungan terperinci Bolehkah Anda Menyimpan Jenis Data Berbeza dalam Medan Struktur Tunggal dalam 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