Comment ajouter de nouvelles méthodes à un type existant en Go ? (par exemple, à int ou string)
Bonjour à tous ! Je viens de commencer à apprendre Go après Python et C#, et j'ai un problème pour étendre la fonctionnalité des types intégrés.
En Python, j'avais l'habitude de faire ceci :
```python
# Python - monkey patching
class MyInt(int):
def is_even(self):
return self % 2 == 0
print(MyInt(4).is_even()) # True
```
En C#, il y a les extension methods :
```csharp
// C# Extension Method
public static class IntExtensions
{
public static bool IsEven(this int value)
{
return value % 2 == 0;
}
}
```
Maintenant, j'essaie de faire la même chose en Go. Je veux ajouter une méthode `IsEven()` au type `int` pour vérifier si un nombre est pair. Voici ce que j'essaie :
```go
package main
import "fmt"
// J'essaie d'étendre int
func (i int) IsEven() bool {
return i%2 == 0
}
func main() {
x := 4
fmt.Println(x.IsEven())
}
```
Le compilateur donne une erreur : "cannot define new methods on non-local type int". Je comprends que Go est plus strict avec les types, mais comment alors