ホームページ ウェブフロントエンド htmlチュートリアル 囲碁要素のキーワードが見つかる - ちゃんチャンネル

囲碁要素のキーワードが見つかる - ちゃんチャンネル

Sep 14, 2018 am 10:24 AM

HTML 検証は HTML 検証を指します。これは、HTML ドキュメントを分析し、標準の HTML ルールと比較してエラーや非標準コードをマークするプロセスです。 Web ページは HTML を使用して表示され、HTML 自体も HTML 仕様をルールおよび標準として採用しています。複数のブラウザ標準にわたって HTML コードを検証します。

chan

chan はチャネルとも呼ばれ、形式はパイプに似ており、コンテンツは一方の端から送信され、もう一方の端から読み出されます。以下にチャネルを定義する方法を説明します。

var 变量名 chan dataType
ログイン後にコピー

チャネルを定義するときは、データ型を指定する必要があります。これは、指定されたデータ型の変数のみがチャネルを通過できることを意味します。

チャネルの初期化

golang でチャネル タイプ変数を初期化する場合、チャネルは 2 つの状況に分けられます。1 つはバッファリングされたチャネル、もう 1 つはバッファリングされていないチャネルです。
次の 2 つの状況における初期化メソッドを紹介します。

// 初始化不带缓冲的通道,通道中数据类型是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 ずつ増加します。 1減少しました。チャネル長がチャネル バッファ長と等しい場合、チャネルに情報を書き込み続けるとプログラムがブロックされます。チャネル長がチャネル バッファ長より小さい場合、チャネルに情報を書き込んでもブロックは発生しません。チャネル長が 5 の場合、6 回目にチャネルに情報を書き込むと、チャネルが読み取られないときにプログラムがブロックされます。

チャネル書き込みの構文形式は次のとおりです:

var ch = make(chan string,10)// 将字符串”hello"写入到通道中,通道长度加1ch <- "hello"
ログイン後にコピー

チャネルの読み取り

チャネルは空です

1. チャネルが閉じられていない場合、プログラムはブロッキング状態に入り、チャネルに情報が書き込まれるまで待機します
2. チャネルはクローズされており、ブロックされません。たとえば、チャネルが chan int の場合、戻り値は 0 になります。文字列の場合、戻り値は空です。
チャンネルは空ではありません
1. チャネルが閉じられていないため、チャネルから情報を一度読み取ります。読み取りが完了したら、実行を続行します。 2. チャネルが閉じられています。読み取りが完了したら、チャネルの読み取り操作に進みます。

val,ok := <-ch
ログイン後にコピー

アサーションを使用して、 channel の値は、チャネルにまだコンテンツがあるかどうかを確認し、チャネルに情報がなく、チャネルが閉じられているかどうかを判断します。チャネルが閉じられていない場合、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 回しか書き込まれないため、チャネルの長さは正確に等しくなります。 to バッファの長さは、プログラムがブロックされていないことを意味します。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 validate HTML validation_HTML /Xhtml_Webページ制作

HTMLスキル編集_CSS/HTML

以上が囲碁要素のキーワードが見つかる - ちゃんチャンネルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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

ビジュアル Web 開発ツール

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 でのネストされたテーブルのガイドです。ここでは、テーブル内にテーブルを作成する方法をそれぞれの例とともに説明します。

HTML 左マージン HTML 左マージン Sep 04, 2024 pm 04:48 PM

HTML マージン左のガイド。ここでは、HTML margin-left の概要とその例、およびそのコード実装について説明します。

HTML テーブルのレイアウト HTML テーブルのレイアウト Sep 04, 2024 pm 04:54 PM

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

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(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

HTML 順序付きリスト HTML 順序付きリスト Sep 04, 2024 pm 04:43 PM

HTML 順序付きリストのガイド。ここでは、HTML 順序付きリストと型の導入とその例についても説明します。

HTML の onclick ボタン HTML の onclick ボタン Sep 04, 2024 pm 04:49 PM

HTML オンクリック ボタンのガイド。ここでは、それらの紹介、動作、例、およびさまざまなイベントでの onclick イベントについてそれぞれ説明します。

See all articles