不如就勇敢打破,生命中的裂缝,阳光就逐渐洒满了其中
在实际编程中,会出现各种各样的错误,对于预料之中的错误,我们可以优雅的处理,让程序平滑运行。而异常情况的错误,我们也可以预留保护机制,保证程序不会异常退出。
在 Go 语言里,我们可以利用提供的错误类型error来自定义错误。
error
阅读全文
Don’t communicate by sharing memory; share memory by communicating.
这是Go语言的编程哲学,使用通信共享数据,而不要通过共享内存来通信。通过Go协程,我们可以简单写出高并发的程序,而协程搭配通道,使得协程间的通讯变得简单。
Go
我的终端一直用的配合oh-my-zsh的zsh作为默认的shell,之前没有特意去留意oh-my-zsh的插件,毕竟默认已经满足了我绝大多数的需求,然而直到最近发现有两款插件还蛮好用的,在这里作下推荐。
oh-my-zsh
zsh
shell
我们前面介绍过channel数据类型,它是传递消息的载体,是并发安全的。Go 语言采用了 CSP 的并发模型,除了channel外,goroutine也是它的基础。
channel
goroutine
goroutine也叫Go协程,协程可以看做是轻量级线程。Go拥有强大的系统级线程调度器,来统一调度goroutine,调度开销远小于系统级线程调度,使得我们可以非常简单的写出高并发程序。
Go协程
最近暂时换了个住处,一直忙着搬家的事。晚上回到家的时间原本也不多,收拾来收拾去,也就到了睡觉的点了,东西实在太多。不过总算是告一段落了。
生活变化了一点,早上通勤时间长了三四十分钟,所幸早起的习惯帮我避开了上班高峰期,之前是起床后在家里吃早餐,看看书(甚至还泡个功夫茶),现在就提前到公司再看书,7点钟的体育西还是很空的。
Go 采用了 CSP 的并发模型。它的基础是 channel 和 goroutine。channel 是 Go 语言的一种数据类型,是传递消息的载体,使用起来十分简单,是并发安全的;而 goroutine 是并发执行的实体。
本文为以后讲「Go的并发模型」打个基础,讲解 channel 是如何使用的。
最近看到描述心态的两个词,在某种程度上还是比较认可的。
富足心态 与 匮乏心态
我们现在的成长生活环境,总是潜移默化地给我们灌输竞争的意识。
字典(map)是一种底层基于哈希的,高效的数据结构。map存储的是键值对,以key为键,计算出哈希值后,取出对应的value。
字典(map)
map
key
value
map的使用方式很简单,声明时指定key的类型、value的类型,便可以得到一个map:map[key_type]value_type,其中 key_type 是键的类型, value_type 是值的类型。
map[key_type]value_type
不知道是不是我一个人的问题,我就是记不住ln -s sourcefile targetfile的结果。
ln -s sourcefile targetfile
究竟是谁指向谁 :-( 。
同样的还有tar的打包参数,总是会搞反。
tar
可能是这两个操作使用频率不高,还是说潜意识里面已经记住了反的方式。
数组 array是许多语言中都会有的基本数据结构,它是我们开辟的存储相同数据类型的一连串地址空间(长度不可变),通过下标寻址,随机访问性能为O(1)。
数组 array
切片 slice可以当做是长度可变的数组,在使用上与数组相同(初始化的方式有区别)。
切片 slice
长度可变