ちりもつもればミルキーウェイ

好奇心に可処分時間が奪われる

Go で word size が 32bit or 64bit どっちか知りた〜い

今回は小ネタ。みんな知りたいときあると思うからメモ

どうやるの

https://cs.opensource.google/go/go/+/refs/tags/go1.22.0:src/math/const.go;l=40

intSize = 32 << (^uint(0) >> 63) // 32 or 64

どゆこと

^uint(0) >> 63 は全bitたったuintを右に63シフトしたやつ
64bitなら1で、32bitだったら0。32bitだとシフトしてる途中で値が漏れて消える。本質的にはこの部分が 32bit or 64bit を判断してる。

最後の 32 << してるところは 32 or 64 の数字をとるためのおまけという感じ

タイトルにGoでってかいたけど大体どれも似たような感じ説ある