>>= 运算符的作用是什么

Hen*_*Tel 5 go

我正在阅读 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

有人可以向我解释一下 >>= 运算符的作用吗?

编辑:这只是一种转变,然后是一种矫揉造作。我认为它处于循环状态这一事实困扰着我。

nes*_*uno 5

>>运算符是右移运算符。

>>=是右移位运算符和赋值的缩写形式:

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)