摘要:在上一篇文章中,我们介绍了常用的文件读写操作,今天接着来研究一下,除了读写以外的其他常见文件操作。 一、创建目录: os.Mkdir() 方法只能创建单个目录,而 os.MkdirAll() 可以创建多级目录。 最后我们使用 os.State() 方法获取目录或文件的描述对象,通过这个对象,我们可以 阅读全文
posted @ 2019-09-11 09:07 liuhe688 阅读 (11) 评论 (0) 编辑
摘要:Go 语言提供了很多文件操作的支持,在不同场景下,有对应的处理方式,今天就来系统地梳理一下,几种常用的文件读写的形式。 一、读取文件内容 1、按字节读取文件 这种方式是以字节为单位来读取,相对底层一些,代码量也较大,我们看下面代码: 2、结合 ioutil 来读取 如果我们不想那么麻烦,可以结合 来 阅读全文
posted @ 2019-08-29 07:21 liuhe688 阅读 (28) 评论 (0) 编辑
摘要:GET 和 POST 是我们最常用的两种请求方式,今天结合前端 axios 请求库来讲一讲,如何在 golang 服务中,正确接收这两种请求的参数信息。 一、搭建一个简单的服务 首先,我们来创建一个最简单的静态页面,将 axios 引进来: 接下来,我们写一个简单的 golang 服务程序,在浏览器 阅读全文
posted @ 2019-07-05 13:29 liuhe688 阅读 (378) 评论 (0) 编辑
摘要:前面我们介绍了 Marshal 和 Unmarshal 方法,今天再解一下另外两个 API:Encoder 和 Decoder。 Encoder Encoder 主要负责将结构对象编码成 JSON 数据,我们可以调用 json.NewEncoder(io.Writer) 方法获得一个 Encoder 阅读全文
posted @ 2019-07-04 13:36 liuhe688 阅读 (161) 评论 (0) 编辑
摘要:上次我们介绍了 Go 语言中序列化和反序列化 JSON 数据的两个方法 Marshal() 和 Unmarshal(),并以示例演示了它们的用法。 我们在例子中看到,需要事先声明好对应的结构体,才能跟 JSON 字段映射起来。 有的时候,如果 JSON 数据的定义过于复杂,我们需要一种更加灵活的方式 阅读全文
posted @ 2019-06-04 08:05 liuhe688 阅读 (186) 评论 (0) 编辑
摘要:JSON 作为目前最流行的数据传输格式, 相信每个程序员都跟它打过交道吧。使用 Go 语言时,也不可避免的要操作 JSON 数据,令人惊喜的是,Go 内置了序列化和反序列化 JSON 的功能,今天就来总结一下。 序列化是将结构对象转为 JSON 字符串,反序列化是将 JSON 字符串转为结构对象,它 阅读全文
posted @ 2019-06-03 08:03 liuhe688 阅读 (457) 评论 (0) 编辑
摘要:最近网站需要针对百度做 SEO 优化,用 Go 语言写了个测试程序,模拟一下百度的爬虫,看看返回的内容是否正确。 代码很简单,就是发送一个请求,把百度相关的信息放入请求头中即可,代码如下: 运行完上面的程序,会在当前目录下,生成一个 source.txt 文件,内容即抓取过来的网页源代码。 有时候, 阅读全文
posted @ 2019-05-15 19:35 liuhe688 阅读 (111) 评论 (0) 编辑
摘要:在相当长的一段时间内,Redux 都是前端开发人员作为状态管理的首先框架,如果不会 Redux,你都不好意思跟别人说自己是搞前端的。 没过多久,开发者们开始意识到,这东西虽说盛行,但它并没有传说中的那么好用,代码写起来过于繁重,开发效率低下。MobX 出现之后,越来越多的人开始放弃 Redux,转投 阅读全文
posted @ 2019-01-23 22:17 liuhe688 阅读 (11) 评论 (0) 编辑
摘要:使用 Go 语言,我们可以轻松创建出 Web 服务,这一点比 Node.js 还要简单,今天就来总结一下 Go 语言中 Web 服务的创建方式。 首先,我们需要引入 net/http 这个包来处理 HTTP 请求,然后在指定的端口开启服务,下面来写一个最简单的 Web 服务程序: 上面代码中,我们会 阅读全文
posted @ 2018-08-10 06:33 liuhe688 阅读 (39) 评论 (0) 编辑
摘要:在上一篇中,我们根据命令行的 URL 参数输入,抓取对应的网页内容并保存到本地磁盘,今天来记录一下如何利用并发,来抓取多个站点的网页内容。 首先,我们在上一次代码的基础上稍作改造,使它能够获取多个站点的内容。下面代码中,我们首先定义好三个 URL,然后逐个发送网络请求,获取数据并保存,最后统计消耗的 阅读全文
posted @ 2018-08-08 13:01 liuhe688 阅读 (88) 评论 (0) 编辑
摘要:今天写个简单的程序,根据指定的 URL 来抓取相应的网页内容,然后存入本地文件。这个程序会涉及到网络请求和文件操作等知识点,下面是实现代码: 上面的代码中,我们引入了 net/http 网络包,然后调用 http.Get(url) 方法获取 URL 对应的资源,之后读取出资源数据,然后在控制台打印, 阅读全文
posted @ 2018-08-07 07:59 liuhe688 阅读 (141) 评论 (0) 编辑
摘要:上次我们从命令行接收用户输入,并统计了每次输入内容出现的次数,今天对程序加以改造,使其能够读取文件内容,并统计每行文本出现的次数。 首先,我们把接收输入的逻辑封装成一个函数: 上面的 coutLines() 函数有两个参数:file os.File 和 counts map[string]int,第 阅读全文
posted @ 2018-08-05 12:53 liuhe688 阅读 (29) 评论 (0) 编辑
摘要:上次我们介绍了收集命令行参数的几种方式,感觉还是不过瘾,今天再来介绍一下如何从命令行接收用户输入。 我们这里设计一个小需求,借助程序从命令行收集用户的逐行输入,以 为结束信号,然后在输入结束后,统计每一行输入的内容和该内容出现的次数。 为了完成这个功能,我们首先需要创建一个 的数据结构,来存放每一行 阅读全文
posted @ 2018-08-03 07:42 liuhe688 阅读 (294) 评论 (0) 编辑
摘要:记得最早在学校机房学习 Java 时,照着书上的例子,写一个最简单 main 方法,当程序运行并在屏幕上打印出 hello world 时,内心竟有种莫名的激动,相信很多人都有这种经历吧。 不管学什么编程语言,都先从命令行程序搞起。 首先,我们来写一个 Go 语言版的 hello world 程序: 阅读全文
posted @ 2018-08-02 07:36 liuhe688 阅读 (66) 评论 (0) 编辑
摘要:上次我们分析了无状态组件生成 DOM 的过程,无状态组件其实就是纯函数,它不维护内部的状态,只是根据外部输入,输出一份视图数据。而今天我们介绍的有状态组件,它有内部的状态,因此在组件的内部,可以自行对状态进行更改,进而渲染出新的视图。下面我们就来分析有状态组件生成真实 DOM 结点的过程。 我们先来 阅读全文
posted @ 2018-07-26 13:40 liuhe688 阅读 (44) 评论 (0) 编辑