KDOC 299: appendはコンパイルするとruntime.growslice()になる
この文書のステータス
- 作成
- 2024-11-19 貴島
- レビュー
- 2024-11-22 貴島
概要
Go言語の append が、コンパイルされるとどうなるかを見てみる。
LEAQ main..autotmp_2+64(SP), AX
MOVL $3, BX
MOVL $2, CX
MOVL $1, DI
LEAQ type:int(SB), SI
PCDATA $1, $0
NOP
CALL runtime.growslice(SB)
MOVQ $3, 16(AX)
つまり、 append はコンパイル時に runtime.growslice(SB) へ変わっているように見える。デバッガで append にステップインできないのは、コンパイル後の実行時に関数自体がなく、相当するソースコードを参照できないから、に見える。