Skip to content

Commit 59dae58

Browse files
rscbradfitz
authored andcommitted
net/url: document and add example for ParseQuery("x")
Fixes #16460. Change-Id: Ie9d5f725d2d7e8210ab6f7604a5a05fc49f707de Reviewed-on: https://go-review.googlesource.com/31331 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
1 parent ac1108b commit 59dae58

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

src/net/url/example_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
package url_test
66

77
import (
8+
"encoding/json"
89
"fmt"
910
"log"
1011
"net/http"
@@ -98,3 +99,21 @@ func ExampleURL_ResolveReference() {
9899
// Output:
99100
// http://example.com/search?q=dotnet
100101
}
102+
103+
func ExampleParseQuery() {
104+
m, err := url.ParseQuery(`x=1&y=2&y=3;z`)
105+
if err != nil {
106+
log.Fatal(err)
107+
}
108+
fmt.Println(toJSON(m))
109+
// Output:
110+
// {"x":["1"], "y":["2", "3"], "z":[""]}
111+
}
112+
113+
func toJSON(m interface{}) string {
114+
js, err := json.Marshal(m)
115+
if err != nil {
116+
log.Fatal(err)
117+
}
118+
return strings.Replace(string(js), ",", ", ", -1)
119+
}

src/net/url/url.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -777,6 +777,10 @@ func (v Values) Del(key string) {
777777
// ParseQuery always returns a non-nil map containing all the
778778
// valid query parameters found; err describes the first decoding error
779779
// encountered, if any.
780+
//
781+
// Query is expected to be a list of key=value settings separated by
782+
// ampersands or semicolons. A setting without an equals sign is
783+
// interpreted as a key set to an empty value.
780784
func ParseQuery(query string) (Values, error) {
781785
m := make(Values)
782786
err := parseQuery(m, query)

0 commit comments

Comments
 (0)