code: func (b *Builder) makeAddr(pri, sec net.Addr, port int) net.Addr {
  	if reflect.ValueOf(pri).IsNil() && reflect.ValueOf(sec).IsNil() || port <= 0 {
  		return nil
  	}
  	addr := pri
  	if addr == nil {
  		addr = sec
  	}
  	switch a := addr.(type) {
  	case *net.IPAddr:
  		return &net.TCPAddr{IP: a.IP, Port: port}
  	case *net.UnixAddr:
  		return a
  	default:
  		panic(fmt.Sprintf("invalid address type %T", a))
  	}
  }
docs: // makeAddr creates an *net.TCPAddr or a *net.UnixAddr from either the
  // primary or secondary address and the given port. If the port is <= 0
  // then the address is considered to be disabled and nil is returned.