ほとんどの高級言語と同様に、文字列の一番下の囲碁言語はバイト配列を指しており、変更することはできませんが、安全でないパッケージを介して文字列ポインタの一番下を操作するには、文字列の内容を変更する目的を達成することができます。C言語での操作へのポインタのこの変更は、しばしば見られます。
- unsafeパッケージによる文字列のバイト配列へのポインタの取得
- ポインタの変更
var originStr = "hello world"
var originBytesPtr = (*[]byte)(unsafe.Pointer(&originStr))
fmt.Printf("before: %s, %d", originStr, len(originStr))
*originBytesPtr = []byte("hzw")
fmt.Printf("after: %s, %d", originStr, len(originStr))
出力結果は
before: hello world, 11
after: hzw, 3
C言語とは異なり、goはポインタ型間で直接転送することができないため、unsafe.Pointerを使用することで、ポインタを操作することが可能になります。