Como implementar parâmetros opcionais de funções em Go? Análogo de sobrecarga de outras linguagens
Olá, colegas! Estou migrando para Go vindo de Python e Java, e me deparei com um problema. Nessas linguagens, estou acostumado com sobrecarga de funções e argumentos opcionais, onde posso definir valores padrão. Por exemplo, em Python eu escreveria:
```python
def create_user(name, age=None, city="Moscow"):
...
```
Mas em Go não posso simplesmente omitir um parâmetro ou escrever duas funções com o mesmo nome. Preciso criar uma função para registrar usuário, onde apenas `name` é obrigatório, e `age` e `city` são opcionais.
Tentei este código, mas o compilador reclama:
```go
func CreateUser(name string, age int, city string) {
// se age não for passado, quero que seja 0
// se city não for passado, quero "Moscow"
}
func CreateUser(name string) { // erro: CreateUser redeclared
CreateUser(name, 0, "Moscow")
}
```
Li a documentação — em Go não há sobrecarga de funções. Vi opções com ponteiros, mas então o código chamador fica verboso: `CreateUser("Alex", nil, nil)`. Existe uma maneira mais elegante?