Go 言語ドキュメントの time.NewTimer 関数をマスターして単一のタイマーを実装する

WBOY
リリース: 2023-11-03 14:19:53
オリジナル
595 人が閲覧しました

Go 言語ドキュメントの time.NewTimer 関数をマスターして単一のタイマーを実装する

Go 言語ドキュメントの time.NewTimer 関数をマスターして、単一のタイマーを実装し、具体的なコード例を添付してください。

時間は私たちの生活の基準であり、タイマーはプログラミングで最も一般的に使用されるツールの 1 つです。 Go 言語では、time パッケージを使用して時間関連の操作を処理でき、NewTimer 関数を使用してワンショット タイマーを作成できます。この記事では、NewTimer 関数を使用して簡単なワンショット タイマーを実装する方法を紹介し、具体的なコード例を添付します。

Go 言語では、時間パッケージは、NewTimer と呼ばれる関数を含む、時間に関連する多くの関数と型を提供します。 NewTimer 関数は次のように定義されます。

func NewTimer(d Duration) *Timer

NewTimer 関数は、Timer 型のポインタを返します。 Timer タイプはワンショット タイマーを表します。これには C という名前のチャネルがあり、タイマーが期限切れになると時間をそのチャネルに送信します。このチャネルからデータを読み取ることで、タイマーの期限切れの通知を取得できます。

次は、NewTimer 関数を使用して 1 つのタイマーを作成するサンプル コードです:

package main

import (
    "fmt"
    "time"
)

func main() {
    // 创建一个持续2秒的定时器
    timer1 := time.NewTimer(2 * time.Second)

    // 等待定时器到期
    <-timer1.C
    fmt.Println("定时器1已经到期")

    // 创建一个持续1秒的定时器
    timer2 := time.NewTimer(time.Second)

    // 在另一个goroutine中等待定时器到期
    go func() {
        <-timer2.C
        fmt.Println("定时器2已经到期")
    }()

    // 阻塞主goroutine,使程序不会立即退出
    time.Sleep(3 * time.Second)
}
ログイン後にコピー

上記のコードでは、最初に time パッケージの NewTimer 関数を使用して 2 つのタイマーを作成します。それぞれタイマー 1 とタイマー 2 です。 timer1 の継続時間は 2 秒、timer2 の継続時間は 1 秒です。

タイマー timer1 の次の行では、構文 を使用してタイマーが期限切れになるのを待ちます。チャネル timer1.C のデータが読み取られると、タイマーが期限切れになったことがわかります。コンソールで対応するメッセージを出力することで、タイマーが期限切れになったかどうかを確認できます。

タイマー timer2 の次の行では、新しい goroutine でタイマーが期限切れになるのを待ちます。これにより、タイマーの期限切れによってメインのゴルーチンの実行がブロックされなくなります。

最後に、プログラムがすぐに終了しないように、time パッケージの Sleep 関数を使用してメインの goroutine をブロックします。 3 秒待った後、タイマー timer1 と timer2 の両方が期限切れになり、対応するメッセージが出力されます。

この記事のサンプル コードを通じて、Go 言語ドキュメントの time.NewTimer 関数を使用して単一のタイマーを実装する方法を理解し、習得することができます。この記事が皆様のお役に立てれば幸いです。

以上がGo 言語ドキュメントの time.NewTimer 関数をマスターして単一のタイマーを実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート