Variablen mit bestimmten Typen Schnittstellenwerten ohne Typzusicherungen zuweisen
Wenn Sie mit Schnittstellen arbeiten, die verschiedene Strukturtypen mit gemeinsam genutzten Feldern und Methoden akzeptieren, Es kann mühsam sein, wiederholte Typzusicherungen durchzuführen, um auf bestimmte Eigenschaften zuzugreifen. Um dieses Problem anzugehen, untersuchen wir alternative Lösungen und klären die Einschränkungen, die das statische Typisierungssystem von Go mit sich bringt.
Statische Typisierung von Go und Mangel an Generika
Im Gegensatz zu dynamisch typisierten Sprachen ist Go ist statisch typisiert und erfordert, dass die Variablentypen zur Kompilierungszeit bekannt sind. Das Fehlen von Generika in der aktuellen Iteration von Go schränkt die Möglichkeit, Variablen mit beliebigen Typen zu erstellen, weiter ein.
Alternative Ansätze
Beispiel
// 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()) }
Das obige ist der detaillierte Inhalt vonWie ordne ich Variablen mit bestimmten Typen zu Schnittstellenwerten ohne Typzusicherungen in Go zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!