在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函数设置默认配置。
|