웹 프론트엔드 HTML 튜토리얼 Go 요소의 키워드가 위치한 곳은-chan 채널입니다.

Go 요소의 키워드가 위치한 곳은-chan 채널입니다.

Sep 14, 2018 am 10:24 AM

HTML 유효성 검사는 HTML 유효성 검사를 의미합니다. HTML 문서를 분석하고 이를 표준 HTML 규칙과 비교하여 오류 및 비표준 코드를 표시하는 프로세스입니다. 웹 페이지는 HTML을 사용하여 렌더링되며 HTML 자체는 HTML 사양을 규칙 및 표준으로 채택합니다. 다양한 브라우저 표준에 걸쳐 HTML 코드를 검증하세요!

chan

chan은 채널이라고도 합니다. 내용이 한쪽 끝에서 전송되어 다른 쪽 끝에서 읽혀지는 형태와 비슷합니다. 다음은 채널 정의 방법에 대한 소개입니다.

var 变量名 chan dataType
로그인 후 복사

채널을 정의할 때 데이터 유형을 지정해야 합니다. 즉, 지정된 데이터 유형의 변수만 채널을 통과할 수 있다는 의미입니다.

채널 초기화

golang에서는 채널 유형 변수를 초기화할 때 채널을 두 가지 상황으로 나눌 수 있는데, 하나는 버퍼링된 채널이고 다른 하나는 버퍼링되지 않은 채널입니다.
다음은 두 가지 상황에서의 초기화 방법에 대한 소개입니다.

// 初始化不带缓冲的通道,通道中数据类型是intvar ch1 = make(chan int)// 初始化带10个缓冲的通道,通道中数据类型是stringvar ch2 = make(chan string,10)
로그인 후 복사

작성하는 또 다른 방법은 채널을 정의하고 초기화하는 것입니다.

// 定义通道,并给通道初始化8个缓冲ch3 := make(chan int ,8)// 定义通道,并初始化为不带缓冲通道ch4 := make(chan string)
로그인 후 복사

채널 할당

채널에 읽고 쓰면 차단이 발생할 수 있습니다. 상태.

  1. 버퍼링이 없는 채널은 쓰기 시 차단됩니다. 채널의 정보를 읽을 때까지 차단이 종료되지 않습니다.

  2. 버퍼 채널의 경우 정보가 채널에 기록될 때마다 채널 길이가 1씩 늘어납니다. 채널에서 정보를 성공적으로 읽을 때마다 채널 길이가 1씩 줄어듭니다. 채널 길이가 채널 버퍼 길이와 같은 경우 계속해서 채널에 정보를 쓰면 프로그램이 차단됩니다. 채널 길이가 채널 버퍼 길이보다 작으면 채널에 정보를 쓰면 차단이 발생하지 않습니다. 채널 길이가 5인 경우 여섯 번째로 채널에 정보를 쓰면 채널을 읽지 않았을 때 프로그램이 차단됩니다.

채널 작성의 구문 형식은 다음과 같습니다.

var ch = make(chan string,10)// 将字符串”hello"写入到通道中,通道长度加1ch <- "hello"
로그인 후 복사

채널 읽기

채널이 비어 있습니다
1. 채널이 닫히지 않으면 프로그램은 차단 상태에 들어가 정보가 채널에 기록될 때까지 기다립니다
2. 채널이 닫혔으며 차단되지 않습니다. 채널의 데이터 유형(더티 데이터)의 초기 값이 반환됩니다. 예를 들어 채널이 chan int이면 반환 값은 0입니다. 채널이 chan이면 반환 값은 0입니다. 문자열인 경우 반환 값은 비어 있습니다.
채널이 비어 있지 않습니다
1. 채널이 닫혀 있지 않습니다. 읽기가 완료된 후 채널에서 정보를 한 번 읽어보세요.
2. 채널이 닫혔습니다. 읽기가 완료된 후

채널 읽기 작업을 진행합니다.

val,ok := <-ch
로그인 후 복사

어설션을 사용하여 채널의 값을 읽고 여전히 있는지 확인합니다. 채널에 정보가 없고 채널이 폐쇄된 경우, 채널이 폐쇄되지 않았으나 채널에 정보가 없는 경우 ok 값이 false입니다. 채널에 콘텐츠가 있으면 프로그램이 차단됩니다. ok 값은 true입니다.

어설션을 사용하지 않고 채널을 읽는 또 다른 방법

val := <-ch
로그인 후 복사

채널 쓰기 및 읽기

버퍼되지 않은 채널 읽기 예제 방법:

package mainimport (    "fmt")func main() {    // 定义一个不带缓冲的通道,通道中数据类型是int
    var c = make(chan int)    // 开启一个携程,读取通道中的内容
    go func() {
        fmt.Println("写入信息是:", <-c)
    }()    // 向通道中写入数据
    c <- 1}
로그인 후 복사

출력 결과:

写入信息是: 1
로그인 후 복사

버퍼된 채널을 읽을 때 채널을 읽고 채널의 데이터 길이가 버퍼 길이보다 크지 않으면 차단되지 않습니다. 그러나 버퍼링된 채널을 읽을 때 채널에 내용이 없으면 프로그램은 여전히 ​​차단 상태에 들어갑니다. 따라서 버퍼링된 채널은 쓰기에만 영향을 미칩니다. 예는 다음과 같습니다.

package mainimport (    "fmt")func main() {    var c = make(chan int, 3)
    c <- 1
    c <- 2
    c <- 3
    //c <- 4
    fmt.Println("end")
}
로그인 후 복사

출력 정보는 다음과 같습니다.

end
로그인 후 복사

3개의 버퍼가 있는 채널에 콘텐츠를 쓰는 경우 3번만 기록되므로 채널 길이는 버퍼 길이와 정확히 같습니다. 프로그램이 차단되지 않습니다. c <- 4 앞의 주석이 제거되면 이 채널을 읽는 프로그램이 없으므로 주 프로그램은 교착 상태에 들어가 예외가 발생합니다.

코루틴 통신

다음 예제 코드에 표시된 것처럼 채널 유형 변수는 기본적으로 주소입니다.

package mainimport (    "fmt")func main() {    var c = make(chan int, 3)
    fmt.Println(c)
}
로그인 후 복사

출력 결과:

0xc042072080
로그인 후 복사

따라서 채널 유형 변수가 매개변수로 함수에 전달되면, 채널의 값을 직접 수정할 수 있습니다. chan 형 변수는 주소이지만 golang에서는 chan 형 변수를 연산하기 위해 값 연산자(*)를 사용하는 것을 허용하지 않습니다. 하지만 chan 형 변수에 먼저 주소 연산자(&)를 사용한 뒤 값 연산자(*)를 사용하면 이 연산 방식은 여전히 ​​정상적으로 실행될 수 있지만 함수 호출에서 목적이 아닌 이상 큰 의미는 없습니다. chan 유형 변수를 재정의하여 원래 변수를 대체합니다.

Chan의 기능은 코루틴 간의 동기화 기능을 효과적으로 구현할 수 있습니다. 버퍼링되지 않은 채널은 강제 동기화를 달성할 수 있는 제로 허용 대기이며, 버퍼링된 채널은 일정량의 허용 대기이며 특정 시간 차이를 허용하는 동기화를 달성할 수 있습니다.

간단한 코루틴 간 통신 예:

package mainimport (    "fmt"
    "time")func main() {    var c = make(chan int)    go func() {
        fmt.Println("待命模式:")        // 读取通道时产生阻塞,等待其他协程向通道写入信息
        fmt.Println("命令代码是:", <-c)
    }()    go func() {        // 延时3秒,向通道中写入信息
        time.Sleep(time.Second * 3)
        fmt.Println("发送命令:")
        c <- 8
        close(c)
    }()
    time.Sleep(time.Second * 5)
    fmt.Println("执行完成")
}
로그인 후 복사

출력 정보:

待命模式:
发送命令:
命令代码是: 8
执行完成
로그인 후 복사

관련 권장 사항:

HTML HTML 유효성 검사_HTML/Xhtml_웹 페이지 제작

HTML 기술 컴파일_CSS/HTML

위 내용은 Go 요소의 키워드가 위치한 곳은-chan 채널입니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

HTML의 테이블 테두리 HTML의 테이블 테두리 Sep 04, 2024 pm 04:49 PM

HTML의 테이블 테두리 안내. 여기에서는 HTML의 테이블 테두리 예제를 사용하여 테이블 테두리를 정의하는 여러 가지 방법을 논의합니다.

HTML의 중첩 테이블 HTML의 중첩 테이블 Sep 04, 2024 pm 04:49 PM

HTML의 Nested Table에 대한 안내입니다. 여기에서는 각 예와 함께 테이블 내에 테이블을 만드는 방법을 설명합니다.

HTML 여백-왼쪽 HTML 여백-왼쪽 Sep 04, 2024 pm 04:48 PM

HTML 여백-왼쪽 안내. 여기에서는 HTML margin-left에 대한 간략한 개요와 코드 구현과 함께 예제를 논의합니다.

HTML 테이블 레이아웃 HTML 테이블 레이아웃 Sep 04, 2024 pm 04:54 PM

HTML 테이블 레이아웃 안내. 여기에서는 HTML 테이블 레이아웃의 값에 대해 예제 및 출력 n 세부 사항과 함께 논의합니다.

HTML 입력 자리 표시자 HTML 입력 자리 표시자 Sep 04, 2024 pm 04:54 PM

HTML 입력 자리 표시자 안내. 여기서는 코드 및 출력과 함께 HTML 입력 자리 표시자의 예를 논의합니다.

PHP에서 HTML/XML을 어떻게 구문 분석하고 처리합니까? PHP에서 HTML/XML을 어떻게 구문 분석하고 처리합니까? Feb 07, 2025 am 11:57 AM

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다

HTML 정렬 목록 HTML 정렬 목록 Sep 04, 2024 pm 04:43 PM

HTML 순서 목록에 대한 안내입니다. 여기서는 HTML Ordered 목록 및 유형에 대한 소개와 각각의 예에 대해서도 설명합니다.

HTML 온클릭 버튼 HTML 온클릭 버튼 Sep 04, 2024 pm 04:49 PM

HTML onclick 버튼에 대한 안내입니다. 여기에서는 각각의 소개, 작업, 예제 및 다양한 이벤트의 onclick 이벤트에 대해 설명합니다.

See all articles