Go 言語は強力かつ柔軟なプログラミング言語であり、豊富な標準ライブラリとドキュメントがあり、多くの実用的な関数とツールを提供します。その中でも time.Tick 関数は Go 言語の非常に便利な関数で、一定の時間内に特定のコードを実行する機能、つまりインターバルタイマーの実装に役立ちます。
この記事では、Go 言語ドキュメントの time.Tick 関数を使いこなす方法と、具体的なコード例を紹介します。
1. time.Tick 機能とは何ですか?
time.Tick関数はGo言語の標準ライブラリにある関数で、その機能はチャネル(Channel)を返すことです。このチャネルを通じて、プログラムは時々値を受け取ることができます。この値は重要ではありません。より重要なのは、この値の発生時間、つまりタイマーの間隔です。
time.Tick の関数シグネチャは次のとおりです:
func Tick(d Duration) <-chan Time
ここで、d は時間間隔、タイプは Duration (時間間隔タイプ)、<-chan Time は関数が値を返すことを意味します。読み取り専用 時間タイプの通路。
2. time.Tick関数の使い方は?
time.Tick 関数を使用してインターバル タイマーを実装するのは非常に簡単です。関数内で for-range ループを使用し、time.Tick によって返される読み取り専用チャネルを読み取るだけです。具体的な例は次のとおりです。
package main import ( "fmt" "time" ) func main() { ticker := time.Tick(1 * time.Second) for now := range ticker { fmt.Printf("%v ", now) } }
上記のコードでは、time.Tick 関数を使用して、1 秒ごとにトリガーするタイマーを作成します。 for ループでは、range を使用して time.Tick によって返される読み取り専用チャネルをトラバースし、各ループは現在時刻の値を出力します。
上記のコードを実行すると、コンソールが現在時刻を毎秒出力していることがわかります:
2022-02-22 19:20:00.047375 +0800 CST m=+1.000141400 2022-02-22 19:20:01.047281 +0800 CST m=+2.000042824 2022-02-22 19:20:02.047335 +0800 CST m=+3.000095875 2022-02-22 19:20:03.047356 +0800 CST m=+4.000116659 ...
現在時刻の出力に加えて、ループ本体で他の操作も実行できます。 。たとえば、データベースから 3 秒ごとにデータを取得する必要があると仮定すると、対応するコードをループ本体に追加できます。
package main import ( "database/sql" "fmt" "time" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/database") if err != nil { fmt.Printf("open database failed: %v ", err) return } defer db.Close() ticker := time.Tick(3 * time.Second) for now := range ticker { fmt.Printf("%v ", now) rows, err := db.Query("SELECT * FROM user") if err != nil { fmt.Printf("query failed: %v ", err) continue } defer rows.Close() for rows.Next() { // do something with rows } } }
上記のコードでは、各ループで、まず現在時刻を出力します。値を指定してから、ユーザー テーブル内のすべてのデータをデータベースから取得します。ループは 3 秒ごとにトリガーされるため、データベースからのデータを 3 秒ごとに更新できます。
3. time.Tick 関数の注意点
time.Tick 関数はシンプルで使いやすい関数ですが、次の点に注意する必要があります。 ##time.Tick パラメーターを 0 または負にすることはできません。それ以外の場合は、無限ループが発生します。
以上がGo 言語ドキュメントの time.Tick 関数をマスターしてインターバルタイマーを実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。