企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### 单向channel 只接收或者只发送数据 ``` var ch1 chan int //ch1 为双向通道 var ch2 chan<- int //ch2为一个只能接收的单向通道 var <- chan int //为一个只能发送的单向通道 // "chan<-" 表示数据进入通道,"<-chan" 表示数据从通道中出来 ``` ``` package main import "fmt" // func main() { // ch := make(chan int) // go func() { // for i := 0; i < 10; i++ { // ch <- i // } // close(ch) // }() // for val := range ch { // fmt.Println(val) // } // } //生产者 func producer(ch chan<- int) { for i := 0; i < 10; i++ { ch <- i } close(ch) } // 消费者 func consumer(ch <-chan int) { for data := range ch { fmt.Println(data) } } func main() { // 通道 ch := make(chan int) go producer(ch) consumer(ch) } 结果: 1 2 3 4 5 6 7 8 9 ``` ### 定时器 参考:https://blog.csdn.net/guyan0319/article/details/90450958 Tick函数是使用channel阻塞当前协程,完成定时任务的执行 ``` package main import ( "fmt" "time" ) // 定时器 func main() { ticker := time.NewTicker(time.Second) for { <-ticker.C fmt.Println("hello world!") } } ```