Golang中的管道字符是指竖线(|)。

huangapple go评论86阅读模式
英文:

Pipe character in Golang

问题

管道符号 | 在这里表示按位或(bitwise OR)操作。在这个例子中,svc.AcceptStopsvc.AcceptShutdownsvc.AcceptPauseAndContinue 是一些常量,它们的值是按位或操作的结果。按位或操作将两个二进制数的对应位进行逻辑或运算,如果任意一个位为1,则结果的对应位也为1。

英文:

In the package golang.org/x/sys/windows/svc there is an example that contains this code:

const cmdsAccepted = svc.AcceptStop | svc.AcceptShutdown | svc.AcceptPauseAndContinue

What does the pipe | character mean?

答案1

得分: 41

如其他人所说,这是位运算中的[包含]或运算符。更具体地说,这些运算符被用于创建位掩码标志,这是一种基于位运算组合选项常量的方式。例如,如果你有一些选项常量是二的幂次方,像这样:

const (
    red = 1 << iota    // 1 (二进制: 001) (2的0次方)
    green              // 2 (二进制: 010) (2的1次方)
    blue               // 4 (二进制: 100) (2的2次方)
)

然后你可以使用位或运算符将它们组合起来,像这样:

const (
    yellow = red | green          // 3 (二进制: 011) (1 + 2)
    purple = red | blue           // 5 (二进制: 101) (1 + 4)
    white = red | green | blue    // 7 (二进制: 111) (1 + 2 + 4)
)

因此,它简单地提供了一种基于位运算组合选项常量的方式,依赖于二进制数制中表示二的幂次方的方式;注意在使用或运算符时二进制位是如何组合的。(有关更多信息,请参见C编程语言中的此示例。)因此,通过组合你的示例中的选项,你只是允许服务接受停止、关闭暂停和继续命令。

英文:

As others have said, it's the bitwise [inclusive] OR operator. More specifically, the operators are being used to create bit mask flags, which is a way of combining option constants based on bitwise arithmetic. For example, if you have option constants that are powers of two, like so:

const (
    red = 1 &lt;&lt; iota    // 1 (binary: 001) (2 to the power of 0)
    green              // 2 (binary: 010) (2 to the power of 1)
    blue               // 4 (binary: 100) (2 to the power of 2)
)

Then you can combine them with the bitwise OR operator like so:

const (
    yellow = red | green          // 3 (binary: 011) (1 + 2)
    purple = red | blue           // 5 (binary: 101) (1 + 4)
    white = red | green | blue    // 7 (binary: 111) (1 + 2 + 4)
)

So it simply provides a way for you to combine option constants based on bitwise arithmetic, relying on the way that powers of two are represented in the binary number system; notice how the binary bits are combined when using the OR operator. (For more information, see this example in the C programming language.) So by combining the options in your example, you are simply allowing the service to accept stop, shutdown and pause and continue commands.

答案2

得分: 4

Go编程语言的规范可以在《Go编程语言规范》中找到。

英文:

> The Go Programming Language Specification
>
> Arithmetic operators
>
> | bitwise OR integers

The Go programming language is defined in The Go Programming Language Specification.

答案3

得分: 1

| 在这里不是管道字符,而是字符,是位操作中的一种。

例如,1 | 1 = 11 | 2 = 30 | 0 = 0

英文:

The | is not pipe character here,but or character,one of bit manipuations.

For example,1 | 1 = 1,1 | 2 = 3,0 | 0 = 0.

huangapple
  • 本文由 发表于 2016年3月14日 20:39:10
  • 转载请务必保留本文链接:https://go.coder-hub.com/35987779.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定