Nel pacchetto golang.org/x/sys/windows/svc
v'è un esempio che contiene questo codice:tubo in Golang
const cmdsAccepted = svc.AcceptStop | svc.AcceptShutdown | svc.AcceptPauseAndContinue
cosa significa il carattere pipe |
?
Nel pacchetto golang.org/x/sys/windows/svc
v'è un esempio che contiene questo codice:tubo in Golang
const cmdsAccepted = svc.AcceptStop | svc.AcceptShutdown | svc.AcceptPauseAndContinue
cosa significa il carattere pipe |
?
Come altri hanno già detto, è l'operatore OR [bitwise] bit a bit. Più in particolare, gli operatori vengono utilizzati per creare flag di bitmap, che è un modo di combinare le costanti di opzioni basate sull'aritmetica bit per bit. Ad esempio, se si dispone di costanti di opzione che sono potenze di due, in questo modo:
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)
)
Poi si possono combinare con l'operatore OR in questo modo:
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)
)
in modo che fornisce semplicemente un modo per poter combinare le costanti di opzioni basate sull'aritmetica bit a bit, basandosi sul modo in cui le potenze di due sono rappresentate nel sistema di numeri binari; nota come i bit binari vengono combinati quando si utilizza l'operatore OR. (Per ulteriori informazioni, vedere this example nel linguaggio di programmazione C.) Quindi combinando le opzioni nell'esempio, si sta semplicemente consentendo al servizio di accettare l'arresto, lo spegnimento e sospendere e continuare i comandi.
The Go Programming Language Specification
| bitwise OR integers
Il linguaggio di programmazione Go è definito in The Go Programming Language Specification.
Il |
non è il carattere pipe qui, ma il carattere o, uno dei bit di manipolazione.
Ad esempio, 1 | 1 = 1
, 1 | 2 = 3
, 0 | 0 = 0
.
'1 | 2' è '3'. – bereal
@ bereal, sì, mi dispiace per il mio lapsus della penna. – starkshang
[Bitwise OR] (https://golang.org/ref/spec#Arithmetic_operators). – bereal