What is go func() {}() and Channel in Go language?
Executes a function using a go statement, which executes a lightweight thread called goroutine.
package main import ( "log" "time" ) func main() { go func() { log.Println("hello") }() time.Sleep(time.Second) // If I don't sleep, MAIN will exit before the GO statement. }
What is Channel?
Functions using the go statement are threaded and therefore disappear without execution when main finishes.
By using a messaging called Channel, variables can be sent and received between goroutines.
This Channel can be used for synchronous processing between threads.
The usage of Channel is simple: send is channel<-value and receive is <-channel.
package main import "log" func main() { fin := make(chan int) // Channel is a reference type, so make() creates an instance go func() { log.Println("golang") fin <- 0 // Send Message }() log.Println(<-fin) // Block until message received here. }
コメント