PHP-Redakteur Xiaoxin bringt Ihnen heute einen Artikel über Golang-Generika. Generics sind eine mit Spannung erwartete Funktion in Golang, aber der neueste Vorschlag schließt die Unterstützung für Slice- oder Array-Typen aus. In diesem Artikel werden die Gründe für diese Entscheidung erläutert und die Auswirkungen auf Entwickler erörtert. Lass uns genauer hinschauen!
Ich habe eine Funktion in Go mit Generika, die nicht auf Slices oder Arrays angewendet werden sollte. Aber ich weiß nicht, wie ich es machen soll. Ich habe Beispiele dafür gefunden, allerdings nur in Typescript, was mich nicht weitergebracht hat. Ich möchte zum Beispiel etwas. Wie:
func sth[T everything_but_slices_or_arrays](arg T) { ...doSth... }
func sth[T everything_but_slices_or_arrays](arg T) { ...doSth... }
您可以使用 comparable
Sie können die comparable
-Einschränkung verwenden, um zur Hälfte zu gelangen wegen der Slices Implementiert diese Schnittstelle nicht:
func foo[t comparable](arg t) { fmt.printf("%#v\n", arg) // for example } func main() { i := []int{42} foo(i) // <- compiler error: []int does not satisfy comparable }
Arrays
(ähnliche Typen):
func foo[t comparable](arg t) { fmt.printf("%#v\n", arg) // for example } func main() { i := [1]int{42} foo(i)
[1]int{42}
comparable
约束有意义,但如果函数不需要任何特定功能,则让它接受 any
Es könnte also davon abhängen, wie wichtig es ist, Slices und Arrays in Ihrer Funktion auszuschließen, was wiederum davon abhängt, was Ihre generische Funktion tut.
Ein häufigerer Ansatz könnte darin bestehen, eine generische Funktion nur auf den Umfang zu beschränken, der erforderlich ist, um sicherzustellen, dass die Funktion tun kann, was sie will. Das heißt, wenn die Funktion Argumente erfordert, die mit einem generischen Typ verglichen werden können, dann
.Wenn Sie eine Funktion mit Werten eines bestimmten Typs (oder bestimmter Typen) einfach nicht willkürlich verwenden möchten, auch wenn daran im Hinblick auf die Funktionsweise der Funktion nichts Falsches ist, können Sie dies auf andere Weise tun (Codeüberprüfung, Pull-Request usw.) sind besser geregelt und reguliert. 🎜 🎜Es ist schwer, sicher zu sein, ohne genau zu wissen, was Ihre generische Funktion bewirken wird. :)🎜
Das obige ist der detaillierte Inhalt vonGolang-Generika schließen Slice- oder Array-Typen aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!