The Go Programming Language book、運動6.5、著者はこの式を使用して私たちに語った:なぜ獣医報告書のuint(0)が63のシフトには小さすぎるのでしょうか?
32 << (^uint(0) >> 63)
プラットフォームは32ビットまたは64ビットであるかどうかをチェックします。
式は非常に明確であり、我々は単純なコードで結果を確認することができます。
package main
import "fmt"
func main() {
fmt.Println(32 << (^uint(0) >> 63))
}
コード32ビットプラットフォーム上のプリント0
と64
64ビットプラットフォーム上。
$ go vet ex6-5.go
ex6-5.go:6: ^uint(0) might be too small for shift of 63
exit status 1
はなぜgo vet
が警告することを私に示してい:
ただし、ファイルをgo vet
を使用して、私は警告を受けますか?どうすればそれを防ぐことができますか?