Avatar ·

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?