为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法获取切片的 len/cap 地址?

有没有办法获取切片的 len/cap 地址?

Go
撒科打诨 2022-09-26 14:58:52
我知道有和函数返回切片的len /cap,但我想获取切片的地址以手动修改它。len()cap()
查看完整描述

1 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

package main


import (

    "fmt"

    "reflect"

    "unsafe"

)


func main() {

    // slice of int

    us := []int{1, 2, 3, 4}


    // len: 4, cap: 4

    fmt.Printf("len: %d, cap: %v\n", len(us), cap(us))


    hdr := (*reflect.SliceHeader)(unsafe.Pointer(&us))

    hdr.Cap = 10

    hdr.Len = 100


    // len: 100, cap: 10

    fmt.Printf("len: %d, cap: %v\n", len(us), cap(us))

}

示例输出:


len: 4, cap: 4

len: 100, cap: 10


查看完整回答
反对 回复 2022-09-26
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号