Avatar ·

Como implementar parâmetros opcionais de funções em Go? (análogo a overloading)

Olá a todos! Comecei a estudar Go recentemente, depois de Java e Python, e me deparei com um problema que me deixou perplexo. Nas linguagens que conhecia antes, era fácil declarar funções com parâmetros opcionais. Por exemplo, em Python eu podia escrever: def connect(host, port=8080, timeout=30). E chamá-la como connect("localhost"), connect("localhost", 9090) ou connect("localhost", 9090, 60). Agora estou tentando fazer o mesmo em Go. Preciso escrever uma função para conectar a um servidor, onde a porta e o timeout devem ser opcionais. Tentei a abordagem óbvia: ```go func connect(host string, port int = 8080, timeout int = 30) { // ... código de conexão } ``` Mas o compilador dá erro: "syntax error: unexpected =, expecting {". Acontece que Go não tem valores padrão para parâmetros. Também li que Go não tem overloading de funções. Ou seja, não posso simplesmente criar duas versões da função com diferentes números de parâmetros, como em Java: ```go