本博客由 [Pipe](https://github.com/b3log/pipe) 强力驱动

周末用 Go 写一篇的爬虫

前几天和 BBAE 的销售大佬聊天,他说他家的网站内容随便爬,我说好,所以这就趁着周末撸了一个爬虫;其中这个爬虫特意用 FAN-OUT 和 FAN-IN 模式,对这块感谢的同学可以自己看一下了。代码如下:packagejobsimport("bytes""encoding/json""fmt""github.com/gocolly/colly""net/http""sync")typeArticlestruct

Go map 和 struct vs new() 和 make()

现在为止我们已经见到了可以使用 make()的三种类型中的其中两个:slices/maps/channels 下面的例子说明了在映射上使用 new 和 make 的区别以及可能发生的错误:示例 new_make.go(不能编译)packagemaintypeFoomap[string]stringtypeBarstruct{thingOnestringthingTwoint}funcmain(){//OKy:=n

理解 Go interface 的几个要素

interface 是一种类型 typeAnimalinterface{GetName()string}interface 是一种类型,使用 type 关键字可以定义一种 interface;interface 一般会有一组方法;这些方法定义了这个 interface 的行为;然后如果一个类实现了 interface 的所有方法,那么我们可以说这个类实现了该 interface。Go 中存在不带任何方法的 interface,

go modules 的一些细节

前言在一些 Java 的项目中,有 Maven 等这些版本管理工具,可以很好的管理各种版本依赖关系,但是在 Golang 的项目中,之前官方并没有提供版本管理工具,以前都是用 goget 进行安装,随着项目的变大,就处理这种依赖关系就变得很麻烦。如果你对 Go 感兴趣,可以关注我的公众号:GoGuidervendor 机制为了解决版本依赖问题,官方出了一个 vendor 机制,将项目依赖的包都放在该目录中,但这也并没有很好地

Golang RPC 实践

摘要:总体上来说,HTTP 每次请求比较浪费资源的。虽然 HTTP 也是走在 TCP 上面的,但是 HTTP 请求自己添加了很多自己的信息,因此会消耗带宽资源。所以一些公司就是用 RPC 作为内部应用的通信协议。如果你对 Go 感兴趣,可以关注我的公众号:GoGuiderRPCRPC(RemoteProcedureCall,远程过程调用)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络细节的应用程序通信协议