Was bedeutet interface{} in Go und wie verwendet man es richtig?
Hallo zusammen! Ich habe gerade angefangen, Go zu lernen, und die Konstruktion `interface{}` verwirrt mich. Ich sehe sie überall: in Funktionen, in Datenstrukturen, in Argumenten. \n\nZum Beispiel habe ich diesen Code gesehen:\n\n```go\nfunc PrintAnything(v interface{}) {\n fmt.Println(v)\n}\n\nfunc main() {\n PrintAnything(42)\n PrintAnything("hello")\n PrintAnything([]int{1,2,3})\n}\n```\n\nIch verstehe, dass dies ein "leeres Interface" ist, aber ich verstehe seinen Sinn nicht vollständig. Heißt das, dass `interface{}` einen Wert beliebigen Typs speichern kann? Aber worin unterscheidet es sich dann von `Object` in Java oder `void*` in C? Und wenn ich ein `interface{}` an eine Funktion übergebe, wie bekomme ich dann den ursprünglichen Typ zurück? \n\nAußerdem sehe ich oft Deklarationen wie `map[string]interface{}` oder `[]interface{}`. Heißt das, dass ich in einem einzigen Slice sowohl Zeichenketten als auch...