Como passar um valor padrão para um método em Go se a linguagem não tem sobrecarga de funções?
Olá a todos! Comecei a estudar Go depois do Python e me deparei com um problema inesperado. Em Python, estou acostumado a escrever funções com argumentos padrão, por exemplo:
```python
def greet(name, greeting="Hello"):
print(f"{greeting}, {name}!")
```
Se chamar `greet("Alice")`, o greeting automaticamente se torna "Hello". Se necessário, posso passar meu próprio valor: `greet("Alice", "Hi")`.
Agora estou escrevendo em Go e quero fazer um método parecido. Digamos que eu tenha uma struct `Config` e um método `NewClient` que recebe o endereço do servidor e um timeout. Quero que o timeout padrão seja 30 segundos, mas às vezes o usuário possa definir o seu próprio. Em Go, tentei escrever assim:
```go
type Config struct {
Address string
Timeout int
}
func NewClient(address string, timeout int) *Config {
if timeout == 0 {
timeout = 30 // valor padrão
}
return &Config{Address: address, Timeout: timeout}
}
```
Mas isso funciona mal: se o usuário explicitamente passar