golang에서는 close() 함수를 사용하여 채널을 닫을 수 있으며 구문은 "close(msg_chan)"입니다. 채널(chan)은 시스템 리소스이므로 chan을 사용할 필요가 없는 경우에는 내장된 close 기능을 사용하여 수동으로 파이프를 닫아야 합니다. 참고: 닫힌 파이프로 데이터를 보내면 프로그램이 패닉 상태가 됩니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, GO 버전 1.18, Dell G3 컴퓨터.
Go 언어의 채널(chan)도 시스템 리소스이므로 chan을 사용할 필요가 없으면 수동으로 파이프를 닫아야 합니다. 파이프를 닫으려면 시스템에 내장된 닫기 기능을 사용해야 합니다.
close()는 내장 함수이며 더 이상 값이 채널로 전송되지 않음을 나타내는 플래그를 설정합니다.
close(msg_chan)
Parameters | Description |
---|---|
msg_chan | 닫아야 할 파이프입니다. |
for range 루프를 사용하여 채널을 닫을 수도 있습니다. 여기서 수신자 고루틴은 주어진 구문을 사용하여 채널이 열려 있는지 닫혀 있는지 확인할 수 있습니다:
ele, ok:= <- Mychannel
여기서 ok 값이 true이면 채널이 열려 있으므로 읽기 작업을 수행할 수 있음을 의미합니다. . 그리고 값이 false이면 채널이 닫혀 있으므로 읽기 작업이 수행되지 않음을 의미합니다.
Explanation
변수를 사용하여 파이프라인에서 반환된 데이터를 수락한 후 두 번째 부울 유형 반환 값은 파이프라인이 닫혔는지 여부를 나타냅니다. false인 경우 파이프라인이 닫혔음을 나타냅니다.
채널 닫는 예
//Go程序说明如何 //关闭使用的通道 //range循环和关闭函数 package main import "fmt" func myfun(mychnl chan string) { for v := 0; v < 4; v++ { mychnl <- "nhooo" } close(mychnl) } func main() { //创建通道 c := make(chan string) // 使用 Goroutine go myfun(c) //当ok的值为为true时,表示通道已打开,可以发送或接收数据 //当ok的值设置为false时,表示通道已关闭 for { res, ok := <-c if ok == false { fmt.Println("通道关闭 ", ok) break } fmt.Println("通道打开 ", res, ok) } }
닫힌 파이프로 데이터를 보내면 프로그램이 패닉 상태가 됩니다.
package main import "fmt" func main() { fmt.Println("嗨客网(www.haicoder.net)") ch := make(chan string, 5) ch <- "Hello" ch <- "HaiCoder" ch <- "Python" close(ch) ch <- "Close" }
파이프를 닫은 후 다시 닫힌 파이프를 사용하여 "Close"” 메시지에서 프로그램을 실행한 후 프로그램이 패닉 상태임을 확인합니다. 즉, 닫힌 파이프가 데이터를 다시 보낼 수 없습니다. 그렇지 않으면 프로그램이 패닉 상태가 됩니다.
【관련 추천: Go 비디오 튜토리얼, 프로그래밍 교육】
위 내용은 golang에서 채널을 닫는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!