我正在尝试将一组键、值传递给 Go 中的另一个函数。对 Go 非常陌生,所以我正在努力弄清楚。package mainimport( "net/http" "fmt" "io/ioutil" "net/url")type Params struct { items []KeyValue}type KeyValue struct { key string value string}func main() { data := []Params{ KeyValue{ key: "title", value: "Thingy" }, KeyValue{ key: "body", value: "Testing 123" }} response, error := makePost("test-api.dev", &data)}func makePost(urlString string, values []Params) (string, error) { v := url.Values{} for _, val := range values { v.Add(val.key, val.value) } response, err := http.PostForm(urlString, v) defer response.Body.Close() contents, err := ioutil.ReadAll(response.Body) if err != nil { fmt.Printf("%s", err) } return string(contents), err}我收到错误:val.key undefined (type Params has no field or method key)val.value undefined (type Params has no field or method key)然而,当我编译时。去游乐场链接http://play.golang.org/p/CQw03wZmAV提前致谢!
3 回答
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
values
是一个[]Params
。当您迭代它时,val
将是 a Params
,但您将其视为KeyValue
. 你真的想通过 an []Params
,而不是仅仅传递aParams
甚至只是 a[]KeyValue
吗?
慕侠2389804
TA贡献1719条经验 获得超6个赞
正如其他人所提到的,您有一个[]Params但您正在尝试使用KeyValues进行初始化。
data := []Params{
KeyValue{ key: "title", value: "Thingy" },
KeyValue{ key: "body", value: "Testing 123" }}
相反,请尝试:
data := &Params{items: []KeyValue{
{key: "title", value: "Thingy"},
{key: "body", value: "Testing 123"},
}}
- 3 回答
- 0 关注
- 175 浏览
添加回答
举报
0/150
提交
取消