zoukankan      html  css  js  c++  java
  • Go linux 实践4

    这是目前学习的最难的Go demo例子

    *****************************************

    如果能看懂,你就出师了,我的任务也就结束了

    *****************************************

    package main

    import (
    "fmt"
    )

    type Fetcher interface {
    Fetch(url string) (body string, urls []string, err error)
    }

    func Crawl(url string, depth int, fetcher Fetcher) {
    if depth <= 0 {
    return
    }

    body, urls, err := fetcher.Fetch(url)
    if err != nil {
    fmt.Println(err)
    return
    }
    fmt.Printf("found: %s %q ", url, body)
    for _, u := range urls {
    Crawl(u, depth-1, fetcher)
    }
    return
    }

    type fakeFetcher map[string]*fakeResult
    type fakeResult struct {
    body string
    urls []string
    }

    func (f fakeFetcher) Fetch(url string) (string, []string, error) {
    if res, ok := f[url]; ok {
    return res.body, res.urls, nil
    }
    return "", nil, fmt.Errorf("not found: %s", url)
    }

    var fetcher = fakeFetcher{
    "http://golang.org/": &fakeResult{
    "The Go Programming Language",
    []string{
    "http://golang.org/pkg/",
    "http://golang.org/cmd/",
    },
    },
    "http://golang.org/pkg/": &fakeResult{
    "Packages",
    []string{
    "http://golang.org/",
    "http://golang.org/cmd/",
    "http://golang.org/pkg/fmt/",
    "http://golang.org/pkg/os/",
    },
    },
    "http://golang.org/pkg/fmt/": &fakeResult{
    "Package fmt",
    []string{
    "http://golang.org/",
    "http://golang.org/pkg/",
    },
    },
    "http://golang.org/pkg/os/": &fakeResult{
    "Package os",
    []string{
    "http://golang.org/",
    "http://golang.org/pkg/",
    },
    },
    }

    func main() {
    Crawl("http://golang.org/", 4, fetcher)
    }

    Finally:

    Go的基本学习就到这里了,以后,如果做工程了,我会再来这里把实际工程中的问题说一说

    谢谢,观赏本系列

    关于Go的基本语言,那就不是本系列的责任。请参考其它教程。但是,如果你想看Go语言的demo示例,那我认为我写的这些要比那些教程里要好一些,当然那得等你会了Go语言后再回来看看的体会啦:)

    记住一点,烂的demo会让你学不会Go语言!

  • 相关阅读:
    cmanformat
    mysql-sql语言参考
    jQuery 判断多个 input checkbox 中至少有一个勾选
    Java实现 蓝桥杯 算法提高 计算行列式
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 算法提高 成绩排序2
    Java实现 蓝桥杯 算法提高 成绩排序2
    Java实现 蓝桥杯 算法提高 成绩排序2
  • 原文地址:https://www.cnblogs.com/woodzcl/p/7464219.html
Copyright © 2011-2022 走看看