Web Analytics

聊聊Go语言的全局变量

本文永久链接 – https://tonybai.com/2023/03/22/global-variable-in-go 注:上面篇首配图的底图由百度文心一格生成。 C语言是Go语言的先祖之一,Go继承了很多C语言的语法与表达方式,这其中就包含了全局变量,虽然Go在其语法规范中并没有直接给出全局变量的定义。但是已经入门Go的童鞋都知道,在Go中包的导出变量(exported variable)起到的就是全局变量的作用。Go包导出变量与C的全局变量在优缺点与使用方式也有相似之处。 ...

March 22, 2023 · 10 min · Tony Bai

一文告诉你如何判断Go接口变量是否相等

本文永久链接 – https://tonybai.com/2023/02/19/how-to-determine-if-two-interface-vars-are-equal 近日一位《Go语言第一课》专栏的读者向我提出一个问题,代码如下: func main() { printNonEmptyInterface1() } type T struct { name string } func (t T) Error() string { return "bad error" } func printNonEmptyInterface1() { var err1 error // 非空接口类型 var err1ptr error // 非空接口类型 var err2 error // 非空接口类型 var err2ptr error // 非空接口类型 err1 = T{"eden"} err1ptr = &T{"eden"} err2 = T{"eden"} err2ptr = &T{"eden"} println("err1:", err1) println("err2:", err2) println("err1 = err2:", err1 == err2) // true println("err1ptr:", err1ptr) println("err2ptr:", err2ptr) println("err1ptr = err2ptr:", err1ptr == err2ptr) // false } 他的问题就是:“当动态类型是指针的时候,接口变量不相等;当动态类型不是指针的时候,接口变量相等,这个怎么理解呢?”。 ...

February 19, 2023 · 6 min · Tony Bai

2022年博客回顾与总结

本文永久链接 – https://tonybai.com/2023/01/11/2022-blog-summary 2022年对我来说,也是十分忙碌和充实的一年。尽管和2021年相比,成果物没那么多^_^。 伴随着二宝的长大,我发现自己的闲暇时间被进一步“压缩”,还好大宝上初中后领悟到了自驱学习的重要性和相关方法后,她的学习现在基本不需要我过问了。 2022年初,《Go语言精进之路:从新手到高手的编程思想、方法和技巧》系列1、2册上市后取得了不错的口碑,纸版书售卖量也还不错,在年中的时候都进入二印了,这也让我有机会修复一些勘误表中的问题,让读者拿到内容更准确的的版本。年中,我还借助谢大组织的“GoCN社区的Go读书会”分享了《Go语言精进之路》这本书的写作历程、内容导读以及个人的一些读书方法和经验。 我在极客时间的《Go语言第一课》专栏由于口碑相传,得到了很多Gopher的关注和学习,我也很积极的回答学员们的各种问题。目前该专栏大约排在极客时间周学习排行榜15名左右,不过还进不了首页推荐,和那些常驻首页的大V课程还没法比^_^。 2022年应谢大之邀,原本计划在GopherChina 2022之前的培训环节做一期《Go高级工程师训练营》培训的,但GopherChina因为疫情原因两次推迟,最终线下大会被取消,没能成行。期望在2023年能把这个培训补上。 ...

January 11, 2023 · 5 min · Tony Bai

聊聊Prometheus Gauge的增减操作实现

本文永久链接 – https://tonybai.com/2023/01/10/how-prometheus-gauge-add-and-sub 1. Gauge是啥? 熟悉Prometheus的小伙伴们都知道Prometheus提供了四大指标类型: Counter Gauge Histogram Summary Histogram和Summary是一类,但理解起来稍复杂一些,这里我们暂且不提。Counter顾名思义“计数器”,仅提供了Add方法,是一个一直递增的数值;而Gauge直译为“仪表盘”,它也是一个数值,但和Counter不同,它不仅提供Add方法,还提供了Sub方法。如果你的指标可增可减或是需要支持负数,那么Gauge显然是一个比Counter更适合的指标类型。 ...

January 10, 2023 · 6 min · Tony Bai

2022年Go语言盘点:泛型落地,无趣很好,稳定为王

本文永久链接 – https://tonybai.com/2022/12/29/the-2022-review-of-go-programming-language 早早就计划好在年前写一个Go语言年度盘点,就像2020年和2021年那样。但恰逢国内疫情管控放开,一波阳了之后身体十分容易疲劳,再加上工作上的事情挺多,这篇盘点也就迟迟没能下笔。 今年的盘点思路将围绕三个关键字来展开:泛型、无趣(boring)和稳定。下面我们逐一来看看。 ...

December 29, 2022 · 11 min · Tony Bai

通过实例理解Go标准库context包

原weibo账号处于jy状态,临时先用小号 https://weibo.com/u/6484441286,欢迎大家关注! “Gopher部落”知识星球双十一新人特惠,领劵加入即享立减88元优惠 – https://t.zsxq.com/078E1QTjM 本文永久链接 – https://tonybai.com/2022/11/08/understand-go-context-by-example 自从context包在Go 1.7版本加入Go标准库,它就成为了Go标准库中较难理解和易误用的包之一。在我的博客中目前尚未有一篇系统介绍context包的文章,很多来自Go专栏或《Go语言精进之路》的读者都希望我能写一篇介绍context包的文章,今天我就来尝试一下^_^。 ...

November 8, 2022 · 19 min · Tony Bai

Go:方法集合中“消失的方法”

本文永久链接 – https://tonybai.com/2022/06/06/the-disappeared-method-in-method-set 在《Go语言第一课》中,我花了三节课对Go方法做了全面细致的讲解,而类型的方法集合是其中的一个重点,因为方法集合决定接口实现,并且课程还分门别类地对各种使用类型嵌入(type embedding)机制定义的类型进行了说明,讲解了这些类型的方法集合的组成规则。我还提供了一个可以输出某类型的方法集合的辅助函数,便于大家很直观地查看特定类型的方法集合。 ...

June 6, 2022 · 5 min · Tony Bai

评点2021-2022年上市的那些Go语言新书

本文永久链接 – https://tonybai.com/2022/06/01/reviewing-those-new-go-language-books-coming-out-in-2021-2022 计算机科学与技术这个工业大类与传统工业类别相比还很“年轻”,并且由于历史原因,整个计算机科学与技术学科的奠基都是由欧美人完成的,因此但凡诞生一门新IT技术或新编程语言,我们首先参考的都是来自欧美的外文技术书籍(影印或翻译)。 ...

June 1, 2022 · 9 min · Tony Bai

Go程序员拥抱C语言简明指南

本文永久链接 – https://tonybai.com/2022/05/16/the-short-guide-of-embracing-c-lang-for-gopher 本文是为于航老师的极客时间专栏《深入C语言和程序运行原理》写的加餐文章《Tony Bai:Go程序员拥抱C语言简明指南》,这里分享给大家,尤其是那些想学习C语言的Gopher们。 你好,我是Tony Bai。 ...

May 16, 2022 · 23 min · Tony Bai

Go字符串比较,终于有人讲清楚了

本文永久链接 – https://tonybai.com/2022/04/18/inside-go-string-comparison 西娅(Thea)是一个刚刚入门Go语言的妹子程序员,今天她遇到了一个让她“surprise”的问题。下面就是那段让妹子西娅困惑的Go代码: ...

April 18, 2022 · 10 min · Tony Bai