如果 DBError 被包装,它永远不会触发重试 。
5、切片初始化有时,我们知道切片的最终长度是多少 。例如,假设我们要将 Foo 的切片转换为 Bar 的切片,这意味着这两个切片将具有相同的长度 。
我们有时候经常会这样初始化切片:
var bars []Barbars := make([]Bar, 0)
我们都知道切片的底层是数组 。如果没有更多可用空间,它会实施增长战略 。在这种情况下,会自动创建一个新数组(容量更大)并复制所有元素 。
现在,假设我们需要多次重复这个增长操作,因为我们的 []Foo 包含数千个元素?插入的摊销时间复杂度(平均值)将保持为 O(1),但在实践中,它会对性能产生影响 。
因此,如果我们知道最终长度,我们可以:
- 使用预定义的长度对其进行初始化:
- func convert(foos []Foo) []Bar { bars := make([]Bar, len(foos)) for i, foo := range foos { bars[i] = fooToBar(foo) } return bars }
- 或者使用 0 长度和预定义容量对其进行初始化:
- func convert(foos []Foo) []Bar { bars := make([]Bar, 0, len(foos)) for _, foo := range foos { bars = Append(bars, fooToBar(foo)) } return bars }
6、上下文管理context.Context对我们来说非常好用,他可以在协程之间传递数据、可以控制协程的生命周期等等 。但是这也造成了它的滥用 。
go官方文档是这么定义的:
推荐阅读
- 沈腾|又帅又好笑!沈腾瘦身成功亮相华表奖 大秀俄语
- 删除|回顾:妻子手机蓝牙忘关,车内自动播放的一条语音,毁了5年婚姻!
- ChatGPT进入iPhone时刻:“Chat感”更强、可使用多种语言
- 周冬雨|周冬雨戛纳造型惨遭网友嫌弃,网友言语粗鄙,但说的好有道理!
- |陈萌独自去做产假,手拿B超单沉默不语,发文24字评价朱小伟
- 秋瓷炫|浪姐4:初代唱跳,周深铁粉孙悦拉满团魂,秋瓷炫韩语rap实力圈粉
- |同是中国儿媳都生了娃,吉娜在家说4种语言,秋瓷炫教儿子说韩语
- |落跑甜心女主官宣被女友求婚,言语幸福声援女同,称非第一次被求婚引争议
- 香菇可以泡一夜吗
- 吴千语|恋上百亿富三代,成功挤身名媛圈,戛纳生图曝光吴千语的真实状态