Che cos'è l'operatore <-
in lingua go? Ho visto questo in molti frammenti di codice relativi a Go, ma qual è il significato di esso?qual è l'operatore "meno che seguito da trattino" in go language?
risposta
hai già le risposte, ma qui va.
Pensa a un canale come a una coda di messaggi.
Se il canale si trova sulla destra della freccia sinistra (< -), significa deselezionare una voce. Salvare la voce in una variabile è opzionale
e <- q
Se il canale si trova a sinistra dell'operatore freccia sinistra, significa accodare una voce.
q <- e
Ulteriori nota su "dequeue" (ricezione) senza memorizzare in una variabile: può essere utilizzato su una coda non tamponata per implementare qualcosa di simile a un "wait/notify" operazione in Java: Si coroutine è bloccato in attesa di dequeue/ricezione di un segnale, poi un'altra coroutine accoda/invia quel segnale, il cui contenuto non è importante.(in alternativa, il mittente potrebbe essere bloccato fino a quando il destinatario non estrae il messaggio)
Per un operando
ch
di tipo di canale, il valore della operazione di ricezione<-ch
è il valore ricevuto dal canalech
.
Riceve un valore da un canale. Vedere http://golang.org/ref/spec#Receive_operator
<-
viene utilizzato in più di un posto nella specifica lingua:
L'operatore
<-
specifica la direzione del canale, inviare o ricevere. Se non viene data alcuna direzione, il canale è bidirezionale. Un canale può essere limitato solo per inviare o solo per ricevere per conversione o assegnazione.Per un operando
ch
di tipo di canale, il valore della operazione di ricezione<-ch
è il valore ricevuto dal canalech
. Il tipo del valore è il tipo di elemento del canale. L'espressione blocca fino a quando un valore è disponibile. Ricevere da un canale nullo blocca per sempre. La ricezione da un canale chiuso ha sempre successo, restituendo immediatamente il valore zero del tipo di elemento.Una dichiarazione di invio invia un valore su un canale. L'espressione del canale deve essere di tipo di canale e il tipo di valore deve essere assegnabile al tipo di elemento del canale.
SendStmt = Channel "<-" Expression .
Channel = Expression .
L'operatore riceverà è anche una parte fondamentale della select statement
La freccia fornisce un suggerimento sulla direzione del flusso di dati. Personalmente, preferisco la sintassi Occam-Pi di? per l'input invece di <-ch (? hints all'interrogazione del canale) e! per output invece di ch <- (! hint al comando del canale) –
Mi chiedo perché la freccia punta sempre a sinistra. Perché non hanno usato <- and ->? – marcus
- 1. Go language su iPhone
- 2. Che cosa è sempre seguito da # (...) pound in Verilog?
- 3. Come usare Go language con NetBeans IDE?
- 4. Significato del trattino basso in un parametro della funzione Go
- 5. Qual è l'errore nella query di seguito?
- 6. Rubino regex: "stringa di cattura se non è seguito da ..."
- 7. Qual è l'equivalente di "go" in MySQL?
- 8. GO language: errore fatale: tutte le goroutine sono addormentate - deadlock
- 9. qual è la sequenza di escape per trattino (-) in PostgreSQL
- 10. Che senso ha usare "is" seguito da "as" anziché "as" seguito da un controllo nullo in C#?
- 11. Come chiamare la funzione da un altro file in go language?
- 12. Trova 'parola' non seguito da '@'
- 13. Qual è la differenza tra [0] e [: 1] in Go?
- 14. Qual è la linea Go Shebang appropriata?
- 15. Qual è il ruolo della sintassi "interface {}" in Go?
- 16. Qual è il punto in un fermo immediatamente seguito da un autorelease?
- 17. Che cos'è "Strutturato" in Structured Query Language?
- 18. qual è la differenza principale tra .net Async e go go go thread leggero
- 19. Qual è il significato dell'istruzione GO in TSQL
- 20. qual è la differenza tra fmt.Println() e println() in go
- 21. Argomento facoltativo seguito da Params
- 22. Qual è la procedura migliore per contrassegnare le variabili che è necessario eliminare in seguito in Java?
- 23. Less less language language: evitare che le parentesi vengano omesse nel CSS compilato
- 24. Perché un nome di variabile seguito da un trattino basso non viene valutato correttamente durante l'interpolazione delle stringhe in Perl?
- 25. Ogni BeginInvoke deve essere seguito da EndInvoke?
- 26. È consigliabile rimuovere il trattino da un GUID?
- 27. int da stringa a go
- 28. Un thread può dormire per meno di mezzo milli secondi in Java/Other language?
- 29. Qual è il punto dei canali a una via in Go?
- 30. In Go Language, come faccio a fare un array unson a un array di oggetti?
Stack Overflow richiede più di un semplice collegamento. L'ho risolto per te. – peterSO