好处是配置可选,直观
type Server struct {
Addr string
Port int
protocol string
Timeout time.Duration
MaxConn int
TLS *tls.Config
}
type option func(*Server)
func NewServer(addr string,port int, option2 ...option)Server{
s := Server{
Addr :addr,
Port: port,
}
for _,o := range option2{
o(&s)
}
return s
}
func Protocol(protocol string)option{
return func(server *Server) {
server.protocol = protocol
}
}
func Timeout(timeout time.Duration)option{
return func(server *Server) {
server.Timeout = timeout
}
}
func MaxConn(maxconn int)option{
return func(server *Server) {
server.MaxConn = maxconn
}
}
func TlsConfig(config *tls.Config)option{
return func(server *Server) {
server.TLS = config
}
}
func main(){
server := NewServer("localhost", 8080, Protocol("http"), Timeout(60))
fmt.Println(server)
}