Skip to content

ゴルーチンIDを取り出す

正規の方法では、 runtime/debug.Stack が返すスタックトレースにゴルーチンIDとゴルーチンの状態が含まれるので、文字列としてパースすればゴルーチンIDを取得できる。

s := string(debug.Stack()) // goroutine xxx [status]

Go 1.22時点では、この関数は最終的に runtime パッケージで g 構造体をみている。

gp := getg()
print("goroutine ", gp.goid)