The Go Programming Language book, 6.5 egzersiz, yazar bu ifadeyi kullanarak anlattı:Neden veteriner raporu uint (0) 63 vardiya için çok küçük olabilir?
32 << (^uint(0) >> 63)
platformu 32 bit veya 64 bit olup olmadığını kontrol etmek.
ifadesi
oldukça açıktır ve biz basit bir kodla sonucu kontrol edebilirsiniz:package main
import "fmt"
func main() {
fmt.Println(32 << (^uint(0) >> 63))
}
64-bit platformunda kodu 32-bit platformunda baskı 0
ve 64
.
$ go vet ex6-5.go
ex6-5.go:6: ^uint(0) might be too small for shift of 63
exit status 1
Neden go vet
uyarıları bu beni gösterir:
Ancak dosya ile go vet
kullanarak, ben uyarı alırsınız? Bunu nasıl önleyebilirim?