目的:在这个较复杂的结构体中,我们要访问Words下面的POSlist下面的Explanation
type DictResponse2 struct {
Words []struct {
Source int `json:"source"`
Text string `json:"text"`
PosList []struct {
Type int `json:"type"`
Phonetics []struct {
Type int `json:"type"`
Text string `json:"text"`
} `json:"phonetics"`
Explanations []struct {
Text string `json:"text"`
Examples []struct {
Type int `json:"type"`
Sentences []struct {
Text string `json:"text"`
TransText string `json:"trans_text"`
} `json:"sentences"`
} `json:"examples"`
Synonyms []interface{} `json:"synonyms"`
} `json:"explanations"`
Relevancys []interface{} `json:"relevancys"`
} `json:"pos_list"`
} `json:"words"`
Phrases []interface{} `json:"phrases"`
BaseResp struct {
StatusCode int `json:"status_code"`
StatusMessage string `json:"status_message"`
} `json:"base_resp"`
}
这时候如果直接Words.Poslist.Explanation就会报错,因为Words和Poslist都是结构体数组,所以要加[],但是加了[]还是报错,for range不支持这样子的写法,它只能遍历一层。所以我们要用多层for range嵌套才能输出
for _, word := range dictResponse.Words {
for _, poslist := range word.PosList {
for _, explanation := range poslist.Explanations {
fmt.Println(explanation.Text)
}
}
}