POLOXUE's BLOG
文章列表
分类标签
关于我
Tag: golang
10
Oct 2023
Golang 中如何实现多行字符串
Python 中,如果想要表示多行字符串,只要通过三单/双引号(""")包裹字符串即可。 类似代码,如下所示。 ```python a = """line1 line2 line3""" print(a) ``` 执行代码,查看输出...
09
Oct 2023
从头构建 Go Web 框架(四):第三方路由集成
> 本系列文章写于 2014 年,相较于 golang 极短的发展历程,这已经是古董级别的一篇文章了,但 web 框架思想概念依然有效。希望通过翻译这个系列文章,能让大家都现有 Go Web 框架有更深的认识。 本文是 "构建属于自己的...
29
Sep 2023
从头构建 Go Web 框架(三):中间件的数据共享
> 本系列文章写于 2014 年,相较于 golang 极短的发展历程,这已经是古董级别的一篇文章了,但 web 框架思想概念依然有效。系统通过这个系列文章,能让大家都现有 Go Web 框架有更深的认识。 本文是 "构建属于自己的 W...
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...
05
Dec 2019
说说 Go 中的变量(附粗制滥造面试题)
和其他语言没有区别,Go 中的数据也是两种表示方式,常量和变量,本文先说说变量吧。 为了增加文章的趣味性(多掉些头发),搜集了一些常见的面试题。部分是自己瞎编的,顺便为自己明年可能到来的面试做些准备。 先答题,题目中附有提示,但无解答...
03
Dec 2019
如何评价 Golang 开源库 Cobra
开源库 Cobra 是 Golang 下用于创建命令行应用的框架。 它也是 k8s、hugo 等开源项目都在用框架。[GitHub 项目地址](https://github.com/spf13/cobra) ## 命令行应用 对于 G...
30
Nov 2019
Go 命令行解析 flag 包之通过子命令实现看 go 命令源码
 [上篇文章](https://m...
26
Nov 2019
Go 命令行解析 flag 包之扩展新类型
 [上篇文章](http...
23
Nov 2019
Go 命令行解析 flag 包之快速上手
 本篇文章是 Go 标准库...
07
Nov 2019
详细介绍 Go 中如何实现 bitset
最近尝试在 B 站录些小视频,我的 [B 站主页](https://space.bilibili.com/314069695)。录视频当是为了彻底搞懂某个知识点的最后一步吧,同时也希望能习得一些额外的能力。 在讲 Go 如何实现 bit...
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 内部结构不确定的情况
 本文主要介绍的是...
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 的介绍。 # 简单概述 我们选择开源项目,通常会比较关注这个项目的测试用例编写的是否完善,一个优秀项目的测试一般写的不会...
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 从入门到不放弃指南
平时比较喜欢逛逛问答平台,比如 stackvoerflow,最近想聚合下一些平台的技术问答,比如 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和bitset两种数据结构,以及它们在Go中的应用场景。 # Go 的数据结构 Go 内置的数据结构并不多。工作中,我们最常用的两种数据结构分别是 slice 和...
27
May 2019
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? 之类问题经常出现在眼前。以前学语言时倒没怎么关心过这类问题。今年公司由...