在go语言中,有时候会遇到函数过多,这个时候,如果都写到一个方法里,可能感觉代码的复杂度就高了,而且也不便于拓展。
这个时候可以通过重构为一个符合结构类型,既可以变相实现可选参数,也可以实现命名实参的功能。
package main import ( "time" "log" ) type serverOption struct { address string port int path string timeout time.Duration log *log.Logger } func main() { opt := newOption() opt.port = 8085 server(opt) } func newOption() * serverOption { return &serverOption{ address: "0.0.0.0", port: 8080, path: "/var/test", log: nil, } } func server(option * serverOption) { }将过多的参数独立成option struct ,既便于扩展参数集,也方便通过newOption函数设置默认配置。