Permalink
Cannot retrieve contributors at this time
Fetching contributors…
| // Copyright © 2016 Alan A. A. Donovan & Brian W. Kernighan. | |
| // License: https://creativecommons.org/licenses/by-nc-sa/4.0/ | |
| // See page 160. | |
| // The urlvalues command demonstrates a map type with methods. | |
| package main | |
| /* | |
| //!+values | |
| package url | |
| // Values maps a string key to a list of values. | |
| type Values map[string][]string | |
| // Get returns the first value associated with the given key, | |
| // or "" if there are none. | |
| func (v Values) Get(key string) string { | |
| if vs := v[key]; len(vs) > 0 { | |
| return vs[0] | |
| } | |
| return "" | |
| } | |
| // Add adds the value to key. | |
| // It appends to any existing values associated with key. | |
| func (v Values) Add(key, value string) { | |
| v[key] = append(v[key], value) | |
| } | |
| //!-values | |
| */ | |
| import ( | |
| "fmt" | |
| "net/url" | |
| ) | |
| func main() { | |
| //!+main | |
| m := url.Values{"lang": {"en"}} // direct construction | |
| m.Add("item", "1") | |
| m.Add("item", "2") | |
| fmt.Println(m.Get("lang")) // "en" | |
| fmt.Println(m.Get("q")) // "" | |
| fmt.Println(m.Get("item")) // "1" (first value) | |
| fmt.Println(m["item"]) // "[1 2]" (direct map access) | |
| m = nil | |
| fmt.Println(m.Get("item")) // "" | |
| m.Add("item", "3") // panic: assignment to entry in nil map | |
| //!-main | |
| } |