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?