Go 语言基础 - 错误处理(一)

Photo by Mark Boss on UnsplashPhoto by Mark Boss on Unsplash

在实际编程中,会出现各种各样的错误,对于预料之中的错误,我们可以优雅的处理,让程序平滑运行。而异常情况的错误,我们也可以预留保护机制,保证程序不会异常退出。

内置的接口类型:error

在 Go 语言里,我们可以利用提供的错误类型error来自定义错误。

阅读全文

Go 语言基础 - 协程与通道

Photo by Clinton Naik on UnsplashPhoto by Clinton Naik on Unsplash

Don’t communicate by sharing memory; share memory by communicating.

这是Go语言的编程哲学,使用通信共享数据,而不要通过共享内存来通信。通过Go协程,我们可以简单写出高并发的程序,而协程搭配通道,使得协程间的通讯变得简单。

阅读全文

oh-my-zsh 插件

Photo by Erik Mclean on UnsplashPhoto by Erik Mclean on Unsplash

我的终端一直用的配合oh-my-zshzsh作为默认的shell,之前没有特意去留意oh-my-zsh的插件,毕竟默认已经满足了我绝大多数的需求,然而直到最近发现有两款插件还蛮好用的,在这里作下推荐。

阅读全文

Go 语言基础 - 协程(goroutine)

Photo by Kalen Emsley on UnsplashPhoto by Kalen Emsley on Unsplash

我们前面介绍过channel数据类型,它是传递消息的载体,是并发安全的。Go 语言采用了 CSP 的并发模型,除了channel外,goroutine也是它的基础。

goroutine也叫Go协程,协程可以看做是轻量级线程。Go拥有强大的系统级线程调度器,来统一调度goroutine,调度开销远小于系统级线程调度,使得我们可以非常简单的写出高并发程序。

阅读全文

早安八月

头太大而很委屈的🐻

最近暂时换了个住处,一直忙着搬家的事。晚上回到家的时间原本也不多,收拾来收拾去,也就到了睡觉的点了,东西实在太多。不过总算是告一段落了。

生活变化了一点,早上通勤时间长了三四十分钟,所幸早起的习惯帮我避开了上班高峰期,之前是起床后在家里吃早餐,看看书(甚至还泡个功夫茶),现在就提前到公司再看书,7点钟的体育西还是很空的。

阅读全文

Go 语言基础 - 通道(channel)

Photo by Ju On on UnsplashPhoto by Ju On on Unsplash

Go 采用了 CSP 的并发模型。它的基础是 channel 和 goroutine。channel 是 Go 语言的一种数据类型,是传递消息的载体,使用起来十分简单,是并发安全的;而 goroutine 是并发执行的实体。

本文为以后讲「Go的并发模型」打个基础,讲解 channel 是如何使用的。

阅读全文

富足心态与匮乏心态

Photo by Tim Marshall on UnsplashPhoto by Tim Marshall on Unsplash

最近看到描述心态的两个词,在某种程度上还是比较认可的。

富足心态 与 匮乏心态

我们现在的成长生活环境,总是潜移默化地给我们灌输竞争的意识。

阅读全文

Go 语言基础 - 字典(map)

Photo by Hayden Scott on UnsplashPhoto by Hayden Scott on Unsplash

字典(map)是一种底层基于哈希的,高效的数据结构。
map存储的是键值对,以key为键,计算出哈希值后,取出对应的value

定义

map的使用方式很简单,声明时指定key的类型、value的类型,便可以得到一个mapmap[key_type]value_type,其中 key_type 是键的类型, value_type 是值的类型。

阅读全文

忍不住吐槽下ln和tar

Photo by Sylvain Guiheneuc on UnsplashPhoto by Sylvain Guiheneuc on Unsplash

不知道是不是我一个人的问题,我就是记不住ln -s sourcefile targetfile的结果。

究竟是谁指向谁 :-( 。

同样的还有tar的打包参数,总是会搞反。

可能是这两个操作使用频率不高,还是说潜意识里面已经记住了反的方式。

阅读全文

Go 语言基础 - 数组与切片

Photo by Sebastian Unrau on UnsplashPhoto by Sebastian Unrau on Unsplash

数组 array是许多语言中都会有的基本数据结构,它是我们开辟的存储相同数据类型的一连串地址空间(长度不可变),通过下标寻址,随机访问性能为O(1)。

切片 slice可以当做是长度可变的数组,在使用上与数组相同(初始化的方式有区别)。

阅读全文