¿Cómo implementar parámetros opcionales de funciones en Go? Análogo de sobrecarga de otros lenguajes
¡Hola, colegas! Estoy migrando a Go desde Python y Java, y me encontré con un problema. En esos lenguajes estoy acostumbrado a la sobrecarga de funciones y argumentos opcionales, donde se pueden establecer valores por defecto. Por ejemplo, en Python escribiría:
```python
def create_user(name, age=None, city="Moscow"):
...
```
Pero en Go no puedo simplemente omitir un parámetro o escribir dos funciones con el mismo nombre. Necesito crear una función para registrar un usuario, donde solo `name` es obligatorio, y `age` y `city` son opcionales.
Probé este código, pero el compilador se queja:
```go
func CreateUser(name string, age int, city string) {
// si age no se pasa, quiero que sea 0
// si city no se pasa, quiero "Moscow"
}
func CreateUser(name string) { // error: CreateUser redeclared
CreateUser(name, 0, "Moscow")
}
```
Leí la documentación: en Go no hay sobrecarga de funciones. Vi opciones con punteros, pero entonces el código de llamada se vuelve engorroso: `CreateUser("Alex", nil, nil)`. ¿Hay alguna