如何在Go中传递默认值给方法(如果语言不支持函数重载)
大家好!我刚从Python开始学习Go,遇到了一个意想不到的问题。在Python中,我习惯编写带有默认参数的函数,例如:
```python
def greet(name, greeting="Hello"):
print(f"{greeting}, {name}!")
```
如果调用 `greet("Alice")`,greeting 会自动变成 "Hello"。如果需要,可以传入自己的值:`greet("Alice", "Hi")`。
现在我用Go写代码,想做一个类似的方法。假设我有一个结构体 `Config` 和方法 `NewClient`,它接受服务器地址和超时时间。我希望默认超时时间为30秒,但有时用户可以设置自己的值。在Go中,我尝试这样写:
```go
type Config struct {
Address string
Timeout int
}
func NewClient(address string, timeout int) *Config {
if timeout == 0 {
timeout = 30 // 默认值
}
return &Config{Address: address, Timeout: timeout}
}
```
但这效果不好:如果用户显式传入