golang中的数组与切片
来源:互联网 发布:如何强身健体知乎 编辑:程序博客网 时间:2024/05/20 02:55
golang中,当用数组去初始化一个切片时,数组的地址即为&slice[0],例子如下:
package mainimport ("fmt""math/rand""net""os""time""unsafe")func main() {for {pcRecvMag()time.Sleep(time.Second)}}func pcRecvMag() {var buf [20]bytereadFromUDP(buf[0:])pcHandleMsg(&buf)}func pcHandleMsg(p2byteArray *[20]byte) {fmt.Printf("byteArray pointer:%v\n", unsafe.Pointer(p2byteArray))fmt.Println(*p2byteArray)}func readFromUDP(b []byte) {b[0] = (byte)(rand.Intn(255))b[1] = (byte)(rand.Intn(255))fmt.Printf("len:%d, cap:%d\n", len(b), cap(b))fmt.Printf("slice0 pointer:%v\n", &b[0])}输出结果:
len:20, cap:20
slice0 pointer:0x115ad940
byteArray pointer:0x115ad940
[86 132 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
len:20, cap:20
slice0 pointer:0x1157a340
byteArray pointer:0x1157a340
[122 254 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
len:20, cap:20
slice0 pointer:0x115ad9e0
byteArray pointer:0x115ad9e0
[151 153 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
这一点可以用slice的数据结构来解释,如下图所示:
这个是 slice 的数据结构,它很简单,一个指向真实 array 地址的指针 ptr ,slice 的长度 len 和容量 cap 。
阅读全文
0 0
- golang中的数组与切片
- GoLang数组与切片
- Golang中 的数组与切片
- golang 数组(array)与切片(slice)
- golang 数组和切片
- golang数组切片详解
- golang语法总结(十五):数组array与切片slice
- golang 数组切片(一)
- golang 数组切片(二)
- Golang Array 数组 和 Slice 切片
- GoLang学习 -- array(数组)和slice(切片)
- Golang Array 数组 和 Slice 切片
- Golang教程:(十一)数组和切片
- golang基础-数组、切片创建_内存_底层实现_修改值_拷贝_循环、string与切片
- numpy中的数组切片
- Go数组与切片
- Golang -- 切片
- golang 切片
- git使用笔记
- secache 官方介绍
- 自定义View技巧
- Storm+Kafka应用场景
- C++实验6
- golang中的数组与切片
- HDU 1312
- secache 官方案例
- J
- 用js给div绑定事件,实现点击切换效果的几种方式总结
- Thread
- rathat网络配置
- Dubbo之——几种负载均衡算法
- 安装laravel