我看到了这段代码
go func() {
var err error
if hasCert(s.TLSConfig) {
err = s.ServeTLS(ln, "" /*certFile*/, "" /*keyFile*/)
} else {
err = s.Serve(ln)
}
if err != http.ErrServerClosed {
errs <- err
}
}()
ServeTLS
位于net/http。为什么在论证中有注释?如果ServeTLS函数从配置中接收证书,为什么要将其添加到参数中呢?
ServeTLS原型func (srv *Server) ServeTLS(l net.Listener, certFile, keyFile string) error
看看https://pkg.go.dev/crypto/tls#Config
它为TLS配置了很多东西,但不包括服务器密钥和证书,所以将它们指定为ServeTLS