POLOXUE's BLOG
HOME
POSTS
TAGS
ABOUT
Tag: golang
28
Oct 2021
从头构建 Go Web 框架(二):中间件
> 本系列文章写于 2014 年,相较于 golang 极短的发展历程,这已经是古董级别的一篇文章了,但 web 框架思想概念依然有效。系统通过这个系列文章,能让大家都现有 Go Web 框架有更深的认识。 本文是 "构建属于自己的 W...
23
Oct 2021
从头构建 Go Web 框架(一):介绍
> 本系列文章写于 2014 年,相较于 golang 极短的发展历程,这已经是古董级别的一篇文章了,但 web 框架思想概念依然有效。系统通过这个系列文章,能让大家都现有 Go Web 框架有更深的认识。 本文是 "构建属于自己的 W...
17
Jul 2021
powermock: 一个支持 gRPC 的 Mock Server
本文介绍的是如何基于 bilibili 的开源方案 powermock 搭建一套通用的适用于自己公司的 MockServer。 ## 背景 我所在公司正处在一个高速发展的阶段,各产品线齐头并进。而我所在的部门主要负责核心能力建设与增长...
10
Dec 2019
Go 如何实现 HTTP 文件上传
早前写过一篇文章,[Go HTTP 请求 QuickStart](https://juejin.im/post/5ce242c2f265da1b6e6574de "Go HTTP 请求 QuickStart")。当时,主要参考 Pytho...
05
Dec 2019
说说 Go 中的变量(附粗制滥造面试题)
和其他语言没有区别,Go 中的数据也是两种表示方式,常量和变量,本文先说说变量吧。 为了增加文章的趣味性(多掉些头发),搜集了一些常见的面试题。部分是自己瞎编的,顺便为自己明年可能到来的面试做些准备。 先答题,题目中附有提示,但无解答...
03
Dec 2019
如何评价 Golang 开源库 Cobra
问题:[如何评价 Cobra (Golang 库)?](https://www.zhihu.com/question/358956995/answer/919748685) 项目地址:https://github.com/spf13/c...
30
Nov 2019
Go 命令行解析 flag 包之通过子命令实现看 go 命令源码
[上篇文章](https://mp.weixin.qq.com/s/rzgYifoMzWOO_PD0-2UIpw) 介绍了 flag 中如何扩展一个新的类型支持。本篇介绍如何使用 `flag` 实现子命令,总的来说,这篇才是这个系列的核心...
26
Nov 2019
Go 命令行解析 flag 包之扩展新类型
[上篇文章](https://www.poloxue.com/posts/2019-11-23-commandline-tool-flag-in-golang/) 说到,除布尔类型 `Flag`,flag 支持的还有整型(int、int6...
23
Nov 2019
Go 命令行解析 flag 包之快速上手
本篇文章是 Go 标准库 flag 包的快速上手篇。 ## 概述 开发一个命令行工具,视复杂程度,一般要选择一个合适的命令行解析库,简单的需求用 Go 标准库 flag 就够了,flag 的使用非常简单。 当然,除了标准库 fl...
07
Nov 2019
详细介绍 Go 中如何实现 bitset
最近尝试在 B 站录些小视频,我的 [B 站主页](https://space.bilibili.com/314069695)。录视频当是为了彻底搞懂某个知识点的最后一步吧,同时也希望能习得一些额外的能力。在讲 Go 如何实现 bitse...
06
Nov 2019
你真的不用再设置 GOROOT 了
为什么不再需要设置 `GOROOT` 呢?推荐读两篇英文文章,我意译了下,将它们放在了一篇里。 [第一篇](https://dave.cheney.net/2013/06/14/you-dont-need-to-set-goroot-r...
03
Nov 2019
从词法分析角度看 Go 代码的组成
之前的 Go 笔记系列,已经完成到了开发环境搭建,原本接下来的计划就是到语法部分了,但后来一直没有前进。主要是因为当时的工作比较忙,分散了精力,于是就暂时放下了。 最近,准备重新把之前计划捡起来。 第一步,肯定是了解 Go 基础语法部...
23
Oct 2019
Go Module 依赖关系的可视化
最近,我开发了一个非常简单的小工具,总的代码量 200 行不到。今天,简单介绍下它。这是个什么工具呢?它是一个用于可视化展示 Go Module 依赖关系的工具。 # 为何开发 为什么会想到开发这个工具?主要有两点原因: 一是最近经...
17
Oct 2019
Go 中如何解析 json 内部结构不确定的情况
本文是通过组织曾经梳理过的一篇文章和一个问答而成。主要介绍的是关于 Go 如何解析 json 内部结构不确定的情况。 # 问题描述 这或许是新手常会遇到的一个问题,无论是在各种微信群、知乎、思否、stackoverflow 上,我常会...
14
Oct 2019
Go Module 存在的意义与解决的问题
最近,我在尝试整理一篇关于 Go 包管理发展历史的文章,希望能加深自己对这一块知识的认识。在搜集资料的时候,发现了这篇文章,顺手翻译了一下。 本文是该系列的第一篇,主要介绍包依赖管理中一些基础知识。文中提出了 Go 开发中的三个痛点,...
28
Sep 2019
一文理清 Go 引用的常见疑惑
今天,尝试谈下 Go 中的引用。 之所以要谈它,一方面是之前的我也有些概念混乱,想梳理下,另一方面是因为很多人对引用都有疑问。我经常会看到与引用有关的问题。 比如,什么是引用?引用和指针有什么区别?Go 中有引用类型吗?什么是值传递?...
15
Sep 2019
Go 中 Slice 的 In 实现探索
之前在知乎看到一个问题:为什么 Golang 没有像 Python 中 in 一样的功能?于是,搜了下这个问题,发现还是有不少人有这样的疑问。 今天来谈谈这个话题。 in 是一个很常用的功能,有些语言中可能也称为 contains,虽...
10
Sep 2019
Go 的 Http 请求系统指南
前几天在 "知乎想法" 谈到了一个话题,如何模仿学习,举了通过 net/http client 模仿 Pyhton 的requests的例子。但并未实践,难道想法真的只能是想法吗?当然不是,于是我决定先暂停一周 GO 笔记,来实践下自己...
10
Sep 2019
Go 问答汇总 Part Three
第三篇 Go 问答总结,2019 年 8 月份总结,大约有 12 篇问答。前两遍地址如下: [Go 问答汇总 Part One](https://www.poloxue.com/posts/2019-07-22-zhihu-go-par...
01
Sep 2019
Go 的静态检测功能
# 译者前言 第三篇 Go 官方博客译文,主要是关于 Go 内置的竞态条件检测工具。它可以有效地帮助我们检测并发程序的正确性。使用非常简单,只需在 go 命令加上 -race 选项即可。 本文最后介绍了两个真实场景下的竞态案例,第一个...
22
Aug 2019
如何测试你的 Go 代码
不论是开源项目,还是日常程序的开发,测试都是必不可少的一个环节。今天我们开始进入 Go 测试模块 testing 的介绍。 差不多两周没有更新 Go 文章了,最近状态不是太好。这篇文章本来准备写的内容非常丰富,结果有点力不从心,移除了好...
17
Aug 2019
Go 中如何使用反射 Part Two
# 译者前言 这篇博文介绍的内容比较实在,主要是关于两方面的内容。一是介绍 reflection 在 encoding/json 中的应用,另一个开发了一个 Cacher 工厂函数,实现函数式编程中的记忆功能,其实就是根据输入对输出进...
15
Aug 2019
如何阅读 Go 源码
Go 的源码在安装包的 src/ 目录下。怎么看它的源码呢?直接看吧!没人教的情况下,只能自己撸了。当然,这种内容一般也不会有人教。 怎么撸? Go 源码中,应该可分为与语言息息相关的部分,和官方提供的标准库。与语言实现相关的肯定是最...
10
Aug 2019
Go 中如何使用反射 Part One
# 什么是反射 多数情况下,Go 中的变量、类型和函数的使用都是非常简单的。 当你需要一个类型: ```go type Foo struct { A int B string } ``` 当你需要一个变量,定义如下: ...
10
Aug 2019
Go 问答汇总 Part Two
继上篇 [Go 问答汇总](https://www.poloxue.com/posts/2019-07-22-zhihu-go-part1/),已经过去了一个多月。今天汇总下近一个多月我关于 Go 的回答。 粗略数了一下,一个多月的时间...
29
Jul 2019
Go 实现词法分析与解析 Part Three
# 译者前言 最近发现我的翻译是越来越随性了,刚开始文章翻译的时候比较拘束,现在更多强调可读性,比如有些对文章大意没有什么影响的文字我现在都会选择直接跳过。 这篇文章主要是关于 INI 解释器的 parser 实现,它会从上一节中 ...
25
Jul 2019
Colly 从入门到不放弃指南
最近发现知乎上感兴趣的问题越来越少,于是准备聚合下其他平台技术问答,比如 segmentfault、stackoverflow 等。 要完成这个工作,肯定是离不开爬虫的。我就顺便抽时间研究了 Go 的一款爬虫框架 colly。 # 概...
24
Jul 2019
Go 实现词法分析与解析 Part Two
本文是关于词法器实现的具体介绍,如果在阅读时遇到困难,建议参考源码阅读,文中的代码片段为了介绍思路。如何解析会在下一篇介绍。 最近简单看了下 Go 源码,在 src/go 目录下有几个模块,token、scanner 和 parser...
22
Jul 2019
Go 问答汇总 Part One
最近比较忙,因为工作需要,必须快速了解一些新知识,写文少了,翻译多了。 原因吗?也简单。 翻译好文不仅可以帮助大家学习,自己也能学到更多。 最近,单独开了个专栏,用于保存自己翻译的计算机相关译文,大家如果有兴趣可以关注一下。Go 专...
17
Jul 2019
Go 实现词法分析与解析 Part One
一直对词法分析与解析的话题比较感兴趣,最近发现了好几篇相关的优秀文章,准备好好翻译和研究下。我的理解,词法分析与解析的应用还是比较广泛的,无论简单的配置文件、各种模板语言、还是我们每天在写编程语言都离不开它。 本篇文章一个系列文章的第一...
12
Jul 2019
Go 通过 Context 实现并发控制
## 译者前言 第二篇官方博客的翻译,主要是关于 Go 并发控制的 context 包。 总体来说,我认为[上一篇](https://juejin.im/post/5d01177a5188254b9000975c)才是 Go 并发的基...
05
Jul 2019
Go 如何构建并发 Pipeline
## 译者前言 这篇文章来自 Go 官网,不愧是官方的博客,写的非常详细。在开始翻译这篇文章前,先简单说明两点。 首先,这篇文章我之前已经翻译过一遍,但最近再读,发现之前的翻译真是有点烂。于是,决定在完全不参考之前译文的情况下,把这...
18
Jun 2019
如何理解 Go 的接口
[如何理解 Golang 中的接口](https://www.zhihu.com/question/318138275/answer/699989214)。个人认为,要理解 Go 的接口,一定先了解下鸭子模型。 # 鸭子模型 那什么鸭...
17
Jun 2019
如何防止你的 Goroutine 泄露(二)
上篇[文章](https://zhuanlan.zhihu.com/p/74090074)说到,防止 goroutine 泄露可从两个角度出发,分别是代码层面的预防与运行层面的监控检测。今天,我们来谈第二点。 # 简述 前文已经介绍了...
10
Jun 2019
如何防止你的 Goroutine 泄露
今天简单谈谈,Go 如何防止 goroutine 泄露。 # 概述 Go 的并发模型与其他语言不同,虽说它简化了并发程序的开发难度,但如果不了解使用方法,常常会遇到 goroutine 泄露的问题。虽然 goroutine 是轻量级的...
03
Jun 2019
Golang 中如何使用 Set
今天来聊一下 Go 如何使用 set,本文将会涉及 set 和 bitset 两种数据结构。 注:花了点时间,将这个专题录制成了视频,上B 站查看 [视频](https://www.bilibili.com/video/av750787...
27
May 2019
Go 虚拟环境管理工具 gvm
本文谈下我对 Go 版本管理的一些思考,并给大家介绍一个小工具,gvm。这个话题说起来也很简单,但如果想用的爽,还是要稍微梳理下。 # 背景介绍 Go 的版本管理,并非包的依赖管理。平时的工作中,很多时候并不会遇到这样的需求,所以可能...
06
May 2019
Go 的那些 IDE
经过前面的一系列工作后,Go 的语言环境已经搭建完成。 我们初步体验了 Go 提供的大部分命令。但在正式进入开发之前,还有件工作要做,那就是选择一款适合自己的 IDE。 ## 为什么使用IDE "程序员为什么要使用 IDE",在一些...
29
Apr 2019
Go 命令快速体验
利用 go run 和 go build 可以完成 Go 的整个编译执行流程。但 Go 提供给我们的命令当然远不止这两个。 本文将在所能及的范围内,尽量地介绍GO提供的所有命令,从而实现对它们有个整体的认识。 ## 概述 除了 go...
15
Apr 2019
详细聊聊如何安装 Go
本篇文章进入 Go 的开发环境搭建系列。 我们知道,编写任何语言的代码都离不开两样工具,语言开发包和代码编辑工具。 今天先来聊聊如何安装 Go。 我们或许都会觉得这种事非常简单,不值得写篇文章介绍。最初我也是这么想的。但深入了解下来...
08
Apr 2019
为什么要学 Go
新学一门语言,大家都想先弄清楚为什么要学它?玩知乎一段时间更是让我感受深刻,诸如 - 为什么要学习Python? - 为什么要学习C? - 为什么要学习Java? 之类问题经常出现在眼前。以前学语言时倒没怎么关心过这类问题。今年公司由...