Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menetapkan Pembolehubah dengan Jenis Tertentu kepada Nilai Antara Muka tanpa Penegasan Jenis dalam Go?
Menetapkan Pembolehubah dengan Jenis Tertentu kepada Nilai Antara Muka tanpa Penegasan Jenis
Apabila bekerja dengan antara muka yang menerima pelbagai jenis struct dengan medan dan kaedah yang dikongsi, ia boleh menjadi menyusahkan untuk melakukan penegasan jenis berulang untuk mengakses sifat tertentu. Untuk menangani perkara ini, kami meneroka penyelesaian alternatif dan menjelaskan had yang dikenakan oleh sistem penaipan statik Go.
Taipan Statik dan Kekurangan Generik Go
Tidak seperti bahasa yang ditaip secara dinamik, Go ditaip secara statik, memerlukan jenis pembolehubah diketahui pada masa penyusunan. Kekurangan generik dalam lelaran semasa Go mengehadkan lagi keupayaan untuk mencipta pembolehubah dengan jenis arbitrari.
Pendekatan Alternatif
Contoh
// Define an interface with common fields and methods type Data interface { GetParam() int SetParam(param int) String() string } // Define concrete struct types type Struct1 struct { Param int } func (s *Struct1) GetParam() int { return s.Param } func (s *Struct1) SetParam(param int) { s.Param = param } func (s *Struct1) String() string { return "Struct1: " + strconv.Itoa(s.Param) } type Struct2 struct { Param float64 } func (s *Struct2) GetParam() float64 { return s.Param } func (s *Struct2) SetParam(param float64) { s.Param = param } func (s *Struct2) String() string { return "Struct2: " + strconv.FormatFloat(s.Param, 'f', -1, 64) } // Function to process data that implements the Data interface func method(data Data) { // No need for type assertions or switches data.SetParam(15) fmt.Println(data.String()) }
Atas ialah kandungan terperinci Bagaimana untuk Menetapkan Pembolehubah dengan Jenis Tertentu kepada Nilai Antara Muka tanpa Penegasan Jenis dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!