在包golang.org/x/sys/windows/svc
中有一个包含此代码的示例:
const cmdsAccepted = svc.AcceptStop | svc.AcceptShutdown | svc.AcceptPauseAndContinue
管|
字符是什么意思?
答案 0 :(得分:23)
正如其他人所说,它是按位[包含] OR运算符。更具体地说,运算符被用于创建位掩码标志,这是一种基于逐位算术组合选项常量的方法。例如,如果你有两个幂的选项常量,就像这样:
const (
red = 1 << 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)
)
然后你可以将它们与按位OR运算符组合起来,如下所示:
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)
)
因此,它简单地为您提供了一种基于按位算法组合选项常量的方法,依赖于在二进制数系统中表示2的幂的方式;注意使用OR运算符时如何组合二进制位。 (有关更多信息,请参阅C编程语言中的this example。)因此,通过组合示例中的选项,您只需允许服务接受停止,关闭和暂停并继续执行命令
答案 1 :(得分:4)
The Go Programming Language Specification
| bitwise OR integers
Go编程语言在The Go Programming Language Specification中定义。
答案 2 :(得分:1)
此处|
不是竖线字符,而是或字符,是位操作之一。
例如,1 | 1 = 1
,1 | 2 = 3
,0 | 0 = 0
。