01—封装err函数
package mainimport ( "net" "fmt" "os")func errFunc(err error, info string) { if err != nil { fmt.Println(info, err) //return // 返回当前函数调用 //runtime.Goexit() // 结束当前go程 os.Exit(1) // 将当前进程结束。 }}func main() { listener, err := net.Listen("tcp", "127.0.0.1:8000") errFunc(err, "net.Listen err:") defer listener.Close() conn, err := listener.Accept() errFunc(err, "Accpet err:") defer conn.Close() buf := make([]byte, 4096) n, err := conn.Read(buf) if n == 0 { return } errFunc(err, "conn.Read") fmt.Printf("|%s|\n", string(buf[:n]))}
02-模拟浏览器访问
# 将下面代码替换成以下代码resp,err := http.Get(url)defer resp.Body.Close()# 替换为client := &http.Client{}req, err1 := http.NewRequest("GET", url, nil)if err1 != nil { err = err1 return}req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36")resp, err2 := client.Do(req)if err2 != nil { err = err2 return}defer resp.Body.Close()
03-匹配换行
ret1 := regexp.MustCompile(`<li class=" col-4">\r\n.*<a href="(?s:(.*?))"`)
04-读取html文件
func main() { addr := ":8888" http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { f, _ := os.Open("./template/index.html") io.Copy(w, f) }) http.ListenAndServe(addr, nil)}