Avatar ·

Wie fügt man neue Methoden zu einem bestehenden Typ in Go hinzu? (z.B. zu int oder string)

Hallo zusammen! Ich habe gerade angefangen, Go nach Python und C# zu lernen, und ich habe ein Problem mit der Erweiterung der Funktionalität von eingebauten Typen. In Python habe ich das so gemacht: ```python # Python - monkey patching class MyInt(int): def is_even(self): return self % 2 == 0 print(MyInt(4).is_even()) # True ``` In C# gibt es extension methods: ```csharp // C# Extension Method public static class IntExtensions { public static bool IsEven(this int value) { return value % 2 == 0; } } ``` Jetzt versuche ich, dasselbe in Go zu machen. Ich möchte eine Methode `IsEven()` zum Typ `int` hinzufügen, um zu prüfen, ob eine Zahl gerade ist. Hier ist, was ich versuche: ```go package main import "fmt" // Versuche, int zu erweitern func (i int) IsEven() bool { return i%2 == 0 } func main() { x := 4 fmt.Println(x.IsEven()) } ``` Der Compiler gibt einen Fehler aus: "cannot define new methods on non-local type int". Ich verstehe, dass Go strenger mit Typen umgeht, aber wie dann?