单词翻译程序 go实现
`)
req.Header.Set("Origin", "https://fanyi.caiyunapp.com")
req.Header.Set("Sec-Fetch-Site", "cross-site")
req.Header.Set("Sec-Fetch-Mode", "cors")
req.Header.Set("Sec-Fetch-Dest", "empty")
req.Header.Set("Referer", "https://fanyi.caiyunapp.com/")
req.Header.Set("Accept-Language", "zh-CN,zh;q=0.9")
// 四、调用cliend.do发送请求,接受响应
resp, err := client.Do(req)
// 判断是否请求出错
if err != nil {
log.Fatal(err)
}
// 防止内存泄漏
defer resp.Body.Close()
// 五、读取响应体的数据
bodyText, err := ioutil.ReadAll(resp.Body)
// // 打印响应的body
// fmt.Printf("%s\n", bodyText)
// 判断是否出错
if err != nil {
log.Fatal(err)
}
if resp.StatusCode != 200 {
log.Fatal("bad StatusCode:", resp.StatusCode, "body:", string(bodyText))
}
// 六、解析响应的body
// 声明一个响应body节点
var responseData ResponseNode
// 反序列化bodyText
err = json.Unmarshal(bodyText, &responseData)
if err != nil {
log.Fatal("解析response出错,", err)
}
// fmt.Printf("%#v\n", responseData)
// fmt.Printf("%#v\n", responseData.Dictionary)
// fmt.Printf("%#v\n", responseData.Dictionary.Explanations)
// 打印翻译的音标
fmt.Println(word, "UK:", responseData.Dictionary.Prons.En, "US:", responseData.Dictionary.Prons.EnUs)
// 打印翻译结果
// 循环range,自带println函数
ans := responseData.Dictionary.Explanations
n := len(ans) //翻译的答案的个数
if n == 0 {
fmt.Println("ans is empty,please try again.")
return
}
for _, value := range ans {
println(value)
}
}
func main() {
// 一、动态读取用户输入的英文单词字符串
// fmt.Print("Please input a word to be translated: ")
// reader := bufio.NewReader(os.Stdin)
// word, err := reader.ReadString('\r')
// if err != nil {
// fmt.Println("an error occured while reading input.", err)
// return
// }
// word = strings.TrimSuffix(word, "\r")
// fmt.Printf("word:%s,len:%d\n", word, len(word))
// 改成命令行读取用户输入
if len(os.Args) != 2 {
fmt.Fprintf(os.Stderr, `