107 | Go编程模式:切片、接口、时间和性能
陈皓
该思维导图由 AI 生成,仅供参考
你好,我是陈皓,网名左耳朵耗子。
今天是我们的第一节课,我先带你学习下 Go 语言编程模式的一些基本技术和要点。了解了这些内容,你就可以更轻松地掌握 Go 语言编程了,其中主要包括数组切片的一些小坑、接口编程,以及时间和程序运行性能相关的内容。
话不多说,我们直接开始。
Slice
首先,我来介绍下 Slice,中文翻译叫“切片”,这个东西在 Go 语言中不是数组,而是一个结构体,其定义如下:
一个空的 Slice 的表现如下图所示:
熟悉 C/C++ 的同学一定会知道在结构体里用数组指针的问题——数据会发生共享!下面我们来看看 Slice 的一些操作:
我来解释下这段代码:
首先,创建一个 foo 的 Slice,其中的长度和容量都是 5;
然后,开始对 foo 所指向的数组中的索引为 3 和 4 的元素进行赋值;
最后,对 foo 做切片后赋值给 bar,再修改 bar[1]。
为了方便你理解,我画了一张图:
从这张图片中,我们可以看到,因为 foo 和 bar 的内存是共享的,所以,foo 和 bar 对数组内容的修改都会影响到对方。
接下来,我们再来看一个数据操作 append() 的示例:
在这段代码中,把 a[1:16] 的切片赋给 b ,此时,a 和 b 的内存空间是共享的,然后,对 a 做了一个 append()的操作,这个操作会让 a 重新分配内存,这就会导致 a 和 b 不再共享,如下图所示:
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文《Go编程模式》深入介绍了Go语言编程模式的一些基本技术和要点,包括切片、接口、时间和性能等方面的内容。文章通过实际示例和技术讲解,深入浅出地介绍了Go语言编程的相关知识。其中涵盖了切片的定义和操作,深度比较的概念,接口编程的方式,接口完整性检查的技巧,以及时间处理方面的最佳实践。此外,文章还提供了一些关于Go语言编程性能的提示,包括数字转换、内存分配、字符串拼接、并发操作、内存重用等方面的建议。总的来说,本文适合读者快速了解和掌握Go语言编程的相关知识,对于想要深入学习Go语言编程模式的读者来说,是一篇值得阅读的文章。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《左耳听风》,新⼈⾸单¥98
《左耳听风》,新⼈⾸单¥98
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(15)
- 最新
- 精选
- Meowoh my godsh, 这个专栏买的是真值,还追加 Go 的选学🥕2021-01-2015
- 戈壁滩的骆驼草皓哥,太强了👍👍👍2021-01-254
- Moonus示例代码,foo = make([]int, 5) 初始化少个: =>foo := make([]int, 5)2021-07-172
- 重生之蓝这一章真的很赞,作为半路出家学习go的码农,每个知识点都是容易忽略的问题,看了这个能避免不少因为对go理解不到位导致的程序错误或者性能问题。2021-02-252
- 特立独行的猪这就是面向对象编程方法的黄金法则——“Program to an interface not an implementation”。 这几个循序渐进的例子,看到这里突然就顿悟了2021-09-131
- Andy最喜欢看到的就是这些图了,特别方便理解2023-03-10归属地:北京
- 老高活鱼Typo: `StringBuild` -> `StringBuilder`2023-02-19归属地:美国
- Andy我就非常喜欢用图说话,一图胜千言2022-12-31归属地:北京
- limix函数,成员方法和接口之间的互动关系,解释到位了2022-07-30归属地:陕西
- 陈琦学习到了2022-04-04
收起评论