golang 匿名函数中使用外部变量

defer 的匿名函数中引用了外部变量a,a 的值在for循环结束最后会被设为”mouse”, 所以defer中的输出都为”mouse”

1
2
3
4
5
6
7
8
9
10
11
12
13
func main() {
animals := []string{"dog", "cat", "mouse"}
for _, a := range animals{
defer func() {
fmt.Println(a)
}()
}
}

// output:
// mouse
// mouse
// mouse

Read More

mysql 死锁

mysql死锁

今天的代码中一不小心引入了一个死锁,找了好久才找到问题。我在一个接口中开启了一个事务,并做了一些更新,由于在接口中又调用了另一个接口,接口中更新了同一条数据,就产生了死锁。

Read More