package client import ( "context" "net" "strings" winio "github.com/Microsoft/go-winio" "github.com/pkg/errors" ) func dialer(ctx context.Context, address string) (net.Conn, error) { addrParts := strings.SplitN(address, "://", 2) if len(addrParts) != 2 { return nil, errors.Errorf("invalid address %s", address) } switch addrParts[0] { case "npipe": address = strings.Replace(addrParts[1], "/", "\\", -1) return winio.DialPipeContext(ctx, address) default: var d net.Dialer return d.DialContext(ctx, addrParts[0], addrParts[1]) } }