golang踩坑实录
zhngcho
这个作者很懒,什么都没留下…
展开
-
golang defer语句特性
引言:golang中的defer语句(即延迟执行语句)为我们的程序开发带来了很大的便利性,大大简化了一些复杂程序的编码实现难度,下面为defer语句踩坑实录。1. defer 语句在语句处(或是叫做注册处)就完成了程序的调用,即完成了语句表达式的计算和函数的传参过程,但是函数并未立即执行;package mainimport "fmt"func main() { a := 1...原创 2018-08-22 15:22:25 · 559 阅读 · 1 评论 -
golang 转义序列
以下为golang中常见的转义字符,这些字符是用在字符串中的转义序列(区别用在正则表达式中的转义序列)坑1:\123 匹配8进制编码所代表的字符,且 \ 之后必须是3位8进制数字,否则会编译错误坑2:\x7F 匹配16进制编码所代表的字符,且 \x 之后必须是2位16进制数字,否则编译错误 \t 匹配横向制表符(相当于 \x09) ...原创 2018-08-22 00:15:29 · 2260 阅读 · 0 评论 -
golang 切片截取参数详解
以 s := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}为例0. 建议:做slice截取时建议用两个参数,尤其是从底层数组进行切片操作时,因为这样在进行第一次append操作时,会给切片重新分配空间,这样减少切片对数组的影响。1. 结论:s = s[low : high : max] 切片的三个参数的切片截取的意义为 low为截取的起始下标(含), high为窃...原创 2018-09-05 15:21:16 · 21565 阅读 · 8 评论 -
golang 结构体作为map的元素时,不能够直接赋值给结构体的某个字段
引入: 错误 Reports assignments directly to a struct field of a map1. 问题的产生这个问题在github上可以追溯到2012年提交的一个issue,链接为https://github.com/golang/go/issues/3117;如上图,结构体作为map的元素时,不能够直接赋值给结构体的某个字段,也就是map中的struc...原创 2018-09-05 17:05:27 · 18646 阅读 · 2 评论 -
诡异的bug,sync.signal 的接锅侠
1. 先来一段内含高能bug的golang代码package mainimport ( "fmt" "math/rand" "sync" "time")var cond sync.Condfunc producer(in chan<- int) { for { ...原创 2018-11-20 22:24:41 · 339 阅读 · 0 评论