![](https://img-blog.csdnimg.cn/20210322104714615.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
golang
文章平均质量分 79
go语言相关知识技能。
王伯爵
做有趣有价值的事!
展开
-
golang error处理之多error聚合
下面这段代码取自于云原生开源项目karmada,我们可以借鉴以下它的检查参数中处理error的方法。// Validate checks Options and return a slice of found errs.func (o *Options) Validate() field.ErrorList { errs := field.ErrorList{} newPath := field.NewPath("Options") skippedResourceConf原创 2022-03-10 09:56:37 · 1611 阅读 · 0 评论 -
如何使用 dlv 结合 Goland 进行程序 debug 调试
如何使用 dlv 结合 Goland 进行程序 debug 调试相信很多 Golang 的初级玩家不会进行程序的 Debug 定位问题单纯的靠脑子,或者效率很低的不断的添加日志打印,别问我为什么知道的因为我就是这样的,最好最快捷的问题定位方式一定是使用 Debug 打断点调试,这时就引出了本文的主角dlv。实际上,delve才是全称,dlv 只是启动命令,如果 VScode,Goland,默认使用的调试器就是基于 delve 的。安装 dlv参考官方的安装方法,把 dlv 命令安装在 go.转载 2022-01-28 15:45:25 · 3590 阅读 · 0 评论 -
Go:如何利用符号表
Illustration created for “A Journey With Go”, made from the original Go Gopher, created by Renee French.ℹ️本文基于 Go 1.13。符号表是由编译器生成和维护的,保存了与程序相关的信息,如函数和全局变量。理解符号表能帮助我们更好地与之交互和利用它。符号表Go 编译的所有二进制文件默认内嵌了符号表。我们来举一个例子并研究它。下面是代码:var AppVersion string..转载 2022-01-11 16:46:37 · 396 阅读 · 0 评论 -
2022 年 11 大 GoLand 插件
要适应新的 IDE 可能是一种不和谐的体验,即使你熟悉是为了它支持的编程语言。它可能不像你熟悉的其他代码编辑工具那样工作,或者它可能缺少你习惯的某些功能。使用 IntelliJ GoLand 作为主要 IDE 的专业 Go 开发人员可能就是这种情况。幸运的是,IntelliJ IDE 提供了一种弥补可用性和生产力差距的快速方法——安装一些插件。插件可以提供熟悉度、添加基本功能、提高生产力并支持其他语言或文件格式。当我开始使用新的 IDE 时,我不会寻找插件。为什么?因为我很少知道它们的存在。如.转载 2021-12-22 09:37:56 · 12392 阅读 · 0 评论 -
Google12条Golang实践
这是直接总结好的 12 条,详细的再继续往下看:先处理错误避免嵌套 尽量避免重复 先写最重要的代码 给代码写文档注释 命名尽可能简洁 使用多文件包 使用 go get 可获取你的包 了解自己的需求 保持包的独立性 避免在内部使用并发 使用 Goroutine 管理状态 避免 Goroutine 泄露最佳实践这是一篇翻译文章,为了使读者更好的理解,会在原文翻译的基础增加一些讲解或描述。来在维基百科:"A best practice is a method or t转载 2021-12-07 18:39:53 · 288 阅读 · 0 评论 -
解决 Ubuntu 20.04 下 PyCharm Goland IntelliJ 等 JetBrains 系列 IDE 无法输入中文
最近升级到了 Ubuntu 20.04 之后 Jetbrains 的 IDE 里都无法输入中文了,比如 Goland、Webstorm、Pycharm 等等。具体表现为,打开 IDE 后能敲出一个汉字,然后候选框就消失了,导致无法输入中文。Google 百度很久也没能解决问题,大部分解决方案都是在启动文件中增加如下几行export XMODIFIERS="@im=ibus"export GTK_IM_MODULE="ibus"export QT_IM_MODULE="ibus"话说之前转载 2021-10-18 16:37:33 · 767 阅读 · 4 评论 -
如何为Linux安装Go语言
导读 Go 语言又称为 golang, 是由 Google 最初开发的一种开源编程语言,其在设计时就遵循了简单、安全和速度的 3 大原则。Go 语言具有多种调试、测试、分析和代码审查工具,如今 Go 语言和工具已在大多数Linux发行版本的源库中进行提供,本文我就来说明如何为Linux 安装 Go 语言。 Ubuntu、Debian或Linux Mint安装Go语言基于 Debian的 Linux 发行版本都可以使用 apt-get命令来进行安装:sudo apt-get i...转载 2021-06-17 11:08:22 · 250 阅读 · 0 评论 -
Ginkgo学习笔记
ByAlex/ inGo0 Comments简介Ginkgo /ˈɡɪŋkoʊ / 是Go语言的一个行为驱动开发(BDD, Behavior-Driven Development)风格的测试框架,通常和库Gomega一起使用。Ginkgo在一系列的“Specs”中描述期望的程序行为。Ginkgo集成了Go语言的测试机制,你可以通过gotest来运行Ginkgo测试套件。Ginkgo安装Shell 1 go get -u github.c...转载 2021-03-22 15:56:13 · 1989 阅读 · 2 评论 -
搞定Go单元测试(四)—— 依赖注入框架(wire)
搞定Go单元测试(四)—— 依赖注入框架(wire)在第一篇文章中提到过,为了让代码可测,需要用依赖注入的方式来构建我们的对象,而通常我们会在main.go做依赖注入,这就导致main.go会越来越臃肿。为了让单元测试得以顺利进行,main.go牺牲了它本应该纤细苗条的身材。太胖的main.go可不是什么好的信号,本篇将介绍依赖注入框架(wire),致力于帮助main.go恢复身材。臃肿的main在main.go中做依赖注入,意味着在初始化代码中我们要管理:依赖的初始化顺序 依赖之间的关系转载 2021-03-22 11:03:14 · 659 阅读 · 0 评论 -
搞定Go单元测试(三)—— 断言(testify)
在上一篇,介绍了表格驱动测试方法和gomock测试框架,大大提升了测试效率与质量。本篇将介绍在测试中引入断言(assertion),进一步提升测试效率与质量。为什么需要断言库我们先来看看Go标准包中为什么没有断言,官方在FAQ里面回答了这个问题。golang.org/doc/faq#ass…总体概括一下大意就是:“Go不提供断言,我们知道这会带来一定的不便,其主要目的是为了防止你们这些程序员在错误处理上偷懒。我们知道这是一个争论点,但是我们觉得这样很coooool~~。”所以,我们引入断转载 2021-03-22 10:59:01 · 960 阅读 · 0 评论 -
搞定Go单元测试(二)—— mock框架(gomock)
通过阅读上一篇文章,相信你对怎么做单元测试已经有了初步的概念,可以着手对现有的项目进行改造并开展测试了。学会了走路,我们尝试跑起来,本篇主要介绍gomock测试框架,让我们的单元测试更加有效率。表格驱动测试方法(Table Driven Tests)当针对某方法进行单元测试的时候,通常不止写一个测试用例,我们需要测试该方法在多种入参条件下是否都能正常工作,特别是要针对边界值进行测试。通常这个时候表格驱动测试就派上用场了——当你发现你在写测试方法的时候用上了复制粘贴,这就说明你需要考虑使用表格驱动测试转载 2021-03-22 10:51:56 · 1153 阅读 · 0 评论 -
搞定Go单元测试(一)——基础原理
搞定Go单元测试(一)——基础原理单元测试是代码质量的保证。本系列文章将一步步由浅入深展示如何在Go中做单元测试。Go对单元测试的支持相当友好,标准包中就支持单元测试,在开始本系阅读之前,需要对标准测试包的基本用法有所了解。现在,我们从单元测试的基本思想和原理入手,一起来看看如何基于Go提供的标准测试包来进行单元测试。单元测试的难点1.掌握单元测试粒度单元测试粒度是让人十分头疼的问题,特别是对于初尝单元测试的程序员。测试粒度做的太细,会耗费大量的开发以及维护时间,每改一个方法,都要改转载 2021-03-22 10:48:54 · 360 阅读 · 0 评论