【Go】配列の途中までのポインタは取れない(cannot take the address of ...)

文字列を[]byteにして、途中までの配列について
ポインタと取りたいと思ってました。

実際やってみたところエラーになった。

        test_str := "aaabbbccc"
        t_b := []byte(test_str)
        fmt.Println(&t_b[0:5])

こんなエラーがでる

cannot take the address of t_b[0:5]

だけどそもそもこれって当たり前のことじゃないか。

&[97 97 97 97 97 98 98 98 98 98 99 99 99 99 99]

配列の変数名って配列のポインタが入ってるから
その中から部分的に取り出そうといったってそれは無理。

そういう場合はあらためて部分配列を新しく作ってから
ポインタを取り出す。

        part_t_b := t_b[0:5]
        fmt.Println(&part_t_b)

stackoverflow.com

package main

import (
        "fmt"
)

func main() {
        test_str := "aaabbbccc"

        t_b := []byte(test_str)

        fmt.Println("-----origin")
        fmt.Println(test_str)
        fmt.Println(t_b)

        fmt.Println("-----pointer")
        fmt.Println(&t_b)
        //fmt.Println(&t_b[0:5])
        fmt.Println(&test_str)
        
        part_t_b := t_b[0:5]
        fmt.Println(&part_t_b)

}
-----origin
aaabbbccc
[97 97 97 98 98 98 99 99 99]
-----pointer
&[97 97 97 98 98 98 99 99 99]
0xc42000e1d0
&[97 97 97 98 98]

スターティングGo言語

スターティングGo言語