From: apocelipes Date: Wed, 7 Aug 2024 23:35:23 +0000 (+0000) Subject: net/url: implement encoding.BinaryAppender for URL X-Git-Tag: go1.24rc1~1242 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=db0b6a85c27b6ae8bd132be11ba07c29c01f4165;p=gostls13.git net/url: implement encoding.BinaryAppender for URL For #62384 Change-Id: I61529efe3a59b13606479b74af6cbff61c9efb6e GitHub-Last-Rev: f188b91978711c55aa2daf2c72277990d25bc328 GitHub-Pull-Request: golang/go#68763 Reviewed-on: https://go-review.googlesource.com/c/go/+/603815 LUCI-TryBot-Result: Go LUCI Reviewed-by: Ian Lance Taylor Reviewed-by: David Chase Auto-Submit: Ian Lance Taylor --- diff --git a/api/next/62384.txt b/api/next/62384.txt index c8dc0c8350..37e0080a13 100644 --- a/api/next/62384.txt +++ b/api/next/62384.txt @@ -2,3 +2,4 @@ pkg encoding, type BinaryAppender interface { AppendBinary } #62384 pkg encoding, type BinaryAppender interface, AppendBinary([]uint8) ([]uint8, error) #62384 pkg encoding, type TextAppender interface { AppendText } #62384 pkg encoding, type TextAppender interface, AppendText([]uint8) ([]uint8, error) #62384 +pkg net/url, method (*URL) AppendBinary([]uint8) ([]uint8, error) #62384 diff --git a/doc/next/6-stdlib/99-minor/net/url/62384.md b/doc/next/6-stdlib/99-minor/net/url/62384.md new file mode 100644 index 0000000000..1d759434e1 --- /dev/null +++ b/doc/next/6-stdlib/99-minor/net/url/62384.md @@ -0,0 +1 @@ +[URL] now also implements the [encoding.BinaryAppender] interface. diff --git a/src/net/url/url.go b/src/net/url/url.go index 7beaef1ba6..9af192fa1f 100644 --- a/src/net/url/url.go +++ b/src/net/url/url.go @@ -1219,7 +1219,11 @@ func splitHostPort(hostPort string) (host, port string) { // Would like to implement MarshalText/UnmarshalText but that will change the JSON representation of URLs. func (u *URL) MarshalBinary() (text []byte, err error) { - return []byte(u.String()), nil + return u.AppendBinary(nil) +} + +func (u *URL) AppendBinary(b []byte) ([]byte, error) { + return append(b, u.String()...), nil } func (u *URL) UnmarshalBinary(text []byte) error { diff --git a/src/net/url/url_test.go b/src/net/url/url_test.go index 68219c3df1..16e08b63c6 100644 --- a/src/net/url/url_test.go +++ b/src/net/url/url_test.go @@ -1866,6 +1866,7 @@ func TestURLHostnameAndPort(t *testing.T) { var _ encodingPkg.BinaryMarshaler = (*URL)(nil) var _ encodingPkg.BinaryUnmarshaler = (*URL)(nil) +var _ encodingPkg.BinaryAppender = (*URL)(nil) func TestJSON(t *testing.T) { u, err := Parse("https://www.google.com/x?y=z")