3.1.将变动的参数放到同一结构体 这样代码就看起来简洁多了 type Server struct { Addr string Port int Conf *Config } type Config struct { Protocol string Timeout time.Duration Maxconns int TLS *tls.Config } func NewServer(addr string, port int, conf *Config) *Server { //... } //使用默认 config为空 srv1, _ := NewServer("localhost", 9000, nil) //config初始化 conf := Config{Protocol:"tcp", Timeout: 60*time.Duration} srv2, _ := NewServer("locahost", 9000, &conf) 3.2.但是上面的优化还不够装杯,后来我们在看源码(比如gin 比如mq)的时候会看到函数式编程 那就让我们看看什么是函数式编程,以后出去好装杯,当然更重要的是提升我们的代码能力