《Go语言圣经》练习4.12

编程入门 行业动态 更新时间:2024-10-09 01:21:32

《Go语言<a href=https://www.elefans.com/category/jswz/34/1711463.html style=圣经》练习4.12"/>

《Go语言圣经》练习4.12

练习 4.12: 流行的web漫画服务xkcd也提供了JSON接口。例如,一个 .0.json 请求将返回一个很多人喜爱的571编号的详细描述。

下载每个链接(只下载一次)然后创建一个离线索引。

编写一个xkcd工具,使用这些离线索引,打印和命令行输入的检索词相匹配的漫画的URL。

  1. “/%d/info.0.json”.i请求链接,下载所有img链接

  2. 用一个map存储内容便于索引

type Xkcd struct {Title string // 漫画标题Img   string // 图片链接// Transcript string // 漫画的描述 : 用于搜索
}var results = make(map[string]string)func main() {// 请求下载urlfor i := 1; i < 150; i++ {fmt.Printf("正在请求 %d \n", i)url := fmt.Sprintf("/%d/info.0.json", i)if result, err := Download(url); err != nil { // 下载链接fmt.Println("[-]请求失败  :", err)} else {fmt.Printf("下载链接 : %v \t %v\n", result.Title, result.Img)}}// 处理输入实现检索if os.Args[1:] != nil {for _, arg := range os.Args[1:] {if val, ok := results[arg]; ok {fmt.Printf("恭喜你查询成功!\n Title: %s\t Url:%s \n", arg, val)} else {fmt.Println("查无此title!")}}}
}func Download(url string) (*Xkcd, error) {// 请求// fmt.Println("正在请求")resp, err := http.Get(url)if err != nil {return nil, err}// 错误代码处理if resp.StatusCode != http.StatusOK {resp.Body.Close()                                 //关闭连接return nil, fmt.Errorf(" query failed : %s", err) // 错误重写}// 正确内容解析var result Xkcd // z准备接收json内容if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {resp.Body.Close()return nil, err}// 解析完毕,返回resp.Body.Close()results[result.Title] = result.Imgreturn &result, err
}

更多推荐

《Go语言圣经》练习4.12

本文发布于:2024-02-06 20:35:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1751318.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:圣经   语言

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!