今回は小ネタ。みんな知りたいときあると思うからメモ
どうやるの
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でってかいたけど大体どれも似たような感じ説ある