Browsed by
标签:标准库

【译】Go 中如何进行单元测试

【译】Go 中如何进行单元测试

在写《Go语言标准库》的第九章 —— 测试 时,看到了此文,讲解挺细致,于是翻译为中文,作为学习《Go语言标准库》的第九章的补充材料。 如果你花过一些时间学习如何编程,你很可能见过许多地方提过测试。似乎每个人都在谈论测试,似乎都同意你应该进行测试,但这到底需要什么呢? 在这篇文章中,我将尝试回答这个问题,首先解释什么是测试,然后我会用 Go 去深入实际编写测试。在编写测试时,我将通过编写自定义 main 包,使用 testing 包以及更复杂的功能(如自定义 setup 和 teardown)以及创建可以用作测试用例的示例代码来覆盖所有内容。 什么是测试? 让我们从最简单的问题开始 — 什么是测试? 简单地说,测试是一个可重复的过程,它验证某个东西是否按预期工作。虽然您通常会听到在软件世界中的测试,但它们并不限于软件。 如果您购买和转售二手电视机,您可能会有一个测试过程,包括将电视插入笔记…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (2 人打了分, 平均分:3.00,总分:5)
Loading...
标准库 expvar 实战

标准库 expvar 实战

Go 标准库有一个 expvar 包。 该软件包可以通过 JSON 格式的 HTTP API 公开您的应用程序和 Go 运行时的指标。 我认为这个软件包对于每个人 gopher 来说都是有用的。 但是,来自 godoc.org 的数据表明,没有多少人知道这个包。截止目前(2017-6-18),该包被公开的项目 import 2207 次,相比较而言,连 image 包被 import 3491 次之多。这篇文章,我想展示 expvar 包的工作原理,以及它的使用。 包简介 包 expvar 为公共变量提供了一个标准化的接口,如服务器中的操作计数器。它以 JSON 格式通过 /debug/vars 接口以 HTTP 的方式公开这些公共变量。 设置或修改这些公共变量的操作是原子的。 除了为程序增加 HTTP handler,此包还注册以下变量: 导入该包有时只是为注册其 HTTP handle…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
Go中的JSON

Go中的JSON

用过PHP的人都知道,PHP处理JSON数据那是相当方便,json_encode和json_decode两个函数搞定一切。那么在Go中该怎么处理JSON呢? 一、encoding/json标准库 学习 json 库应该先了解 Go 中的 struct tag、reflect等知识。 1、概述 json包实现了json对象的编解码,参见RFC 4627。Json对象和go类型的映射关系请参见Marshal和Unmarshal函数的文档。 参见”JSON and Go”获取本包的一个介绍:http://golang.org/doc/articles/json_and_go.html 这是官方的一篇博文。 2、核心函数和类型 对于函数和类型,我们关注经常使用的。 1)Marshal 和 Unmarshal 这两个是最常使用的函数,也就是 json 对象的编解码。这两个函数…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
标准库— 操作源码之收集go包信息:go/build

标准库— 操作源码之收集go包信息:go/build

在golang标准库中,有那么一类包,它们用于处理go项目目录结构、源码、语法、基本操作等。一般程序中可能用不到这些包,但在go工具链源码中用到了,之所以学习这些标准库,是为了更好的看go工具链的源码。首先我们来看收集go包信息的库:go/build 一、build包概述 该包文档中首先介绍了Go Path。如果对该部分还不清楚,可以看下文档的说明;或者官方其他文档;或者看 Go项目的目录结构。 如果你看过go源码,应该见到过类似这样的包注释:+build ignore。这是编译约束条件(Build Constraints),可以理解为条件编译。关于这部分的更多内容,稍后详细介绍。 二、类型和函数 1、ToolDir变量 该变量的值是go工具链的路径。6g/6l之类的工具,就在这个路径下 2、ArchChar函数 获得架构的字符表示。在之前的文章中介绍过。比如:x86 32bit用8表示;…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
标准库—命令行参数解析flag

标准库—命令行参数解析flag

评论有人提到没有例子,不知道讲的是什么。因此,为了大家能够更好地理解,特意加了一个示例。其实本文更多讲解的是 flag 的实现原理,加上示例之后,就更好地知道怎么使用了。建议阅读 《Go语言标准库》一书的对应章节:flag – 命令行参数解析。 在写命令行程序(工具、server)时,对命令参数进行解析是常见的需求。各种语言一般都会提供解析命令行参数的方法或库,以方便程序员使用。如果命令行参数纯粹自己写代码解析,对于比较复杂的,还是挺费劲的。在go标准库中提供了一个包:flag,方便进行命令行解析。 注:区分几个概念 1)命令行参数(或参数):是指运行程序提供的参数 2)已定义命令行参数:是指程序中通过flag.Xxx等这种形式定义了的参数 3)非flag(non-flag)命令行参数(或保留的命令行参数):后文解释 一、使用示例 我们以 nginx 为例,执行 nginx -…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...