我正在阅读 go 中排序的实现,并且在实现中存在这个特定的循环func Sort(data Interface):
for i := n; i > 0; i >>= 1 {
maxDepth++
}
Run Code Online (Sandbox Code Playgroud)
排序实现: https: //golang.org/src/sort/sort.go
有人可以向我解释一下 >>= 运算符的作用吗?
编辑:这只是一种转变,然后是一种矫揉造作。我认为它处于循环状态这一事实困扰着我。
该>>运算符是右移运算符。
>>=是右移位运算符和赋值的缩写形式:
i >>= 1
Run Code Online (Sandbox Code Playgroud)
它等同于:
tmp := i >> 1
i = tmp
Run Code Online (Sandbox Code Playgroud)
这与以下内容相同(无需创建新变量):
i := i >> 1
Run Code Online (Sandbox Code Playgroud)