Go 1.13 errors 包优雅的处理异常判断

Go 1.13 发布后对 errors 包有进一步的改善,其中errors.Is可以很方便的进行异常的判断。

使用 Goribot 快速构建 Golang 爬虫

zhshch2002/goribot: [Crawler/Scraper for Golang]Make a Golang spider in 3 lines是我的一个业余项目,目的是能尽可能简洁的使用Golang开发爬虫应用。

Golang生成随机数

在GoLang 中,我们可以通过 math/rand 包里的方法来生成一个伪随机数:

1
2
3
4
5
6
7
8
9
10
package main

import (
"fmt"
"math/rand"
)

func main() {
fmt.Println(rand.Int()) // => 134020434
}

但如果你在本地,运行和我一样的代码,无论运行多少次,输出都是一样的

Golang爬虫全家桶—Goquery选择器

goquery类似jquery,它是jquery的go版本实现。使用它,可以很方便的对HTML进行处理。

Golang爬虫全家桶—Goquery开箱指南

Goquery是一个Html解析库。其部分操作很接近JQuery的选择器。基本上会用jquery的,Goquery基本可以1分钟上手。

安装

1
go get github.com/PuerkitoBio/goquery

然后引入

1
import "github.com/PuerkitoBio/goquery"

从Golang中的panic、defer和recover到错误处理的理解方式

Golang中的异常,不是用try-catch来处理的。很多Go的函数会返回多个参数,一般最后一个参数为error类型。

在Golang的设计哲学里:

  • 异常应该用对应的逻辑去处理,无法处理使程序无法继续的情况返回error。
  • error不是异常,是需要被记录到log中的使程序无法运行的情况
  • error位置的返回值为nil即认为没有错误。
  • panic会打断程序,输出错误日志,recover会取消panic的打断继续运行。

Lightsocks 使用教程 Golang编写的SOCKS5轻量级网络混淆代理

Lightsocks 一个轻量级网络混淆代理,基于SOCKS5协议,可用来代替Shadowsocks

  • 只专注于混淆,用最简单高效的混淆算法达到目的;
  • 不会放大传输流量,传输流量更少更快,占用资源更少(内存占用1M左右,CPU 占用 0.1% 左右);
  • 纯Golang编写,跨平台。

go get没反应?启用goproxy.cn代理

由于一些众所周知的原因,go get并不能顺利的访问golang.org/x相关的内容。所以执行go get时会长时间没有反应。

对此可以使用GOPROXY这个环境变量设置一个golang.org/x的模块代理。(关于模块代理

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×