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

Is there a way get slice's len/cap address?

我知道 slice 有 len()cap() 函数 return len/cap,但我想获取 slice 的地址以手动修改它。

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