为什么Go使用^而不是〜为一元按位而不是?

use*_*783 2 syntax conventions operators go

大多数编程语言用于~表示一元按位非操作.相反,去使用^:

fmt.Println(^1)  // Prints -2
Run Code Online (Sandbox Code Playgroud)

为什么Go设计师决定在这里打破常规?

use*_*317 7

因为^ x等于m ^ x,m ="所有位设置为1"表示无符号x,m = -1表示带符号x.在规范中说的如此.

它类似于-x是0 - x