Goにおける`time.Sleep`の使い方
Min-jun Kim
Dev Intern · Leapcell

Key Takeaways
time.Sleep
は、指定された時間だけ現在のゴルーチンを一時停止します。time.Second
やtime.Millisecond
のような定義済みの時間定数を使用します。- プログラム全体ではなく、呼び出し元のゴルーチンのみに影響します。
Goプログラミングでは、レート制限、スケジューリング、遅延のシミュレーションなどのタスクにおいて、コード実行のタイミングを管理することが不可欠です。time
パッケージは、指定された時間だけ現在のゴルーチンの実行を一時停止する Sleep
関数を提供します。
time
パッケージのインポート
time.Sleep
を使用するには、まず time
パッケージをインポートする必要があります。
import "time"
time.Sleep
の構文
Sleep
関数には、次の構文があります。
func Sleep(d Duration)
パラメータ d
は、スリープ間隔の期間を表します。Duration
型は int64
の型エイリアスであり、経過時間をナノ秒で表します。
時間の指定
Goは、期間を指定するために time
パッケージに定義済みの定数を提供しています。
time.Nanosecond
(ns)time.Microsecond
(µs)time.Millisecond
(ms)time.Second
(s)time.Minute
(m)time.Hour
(h)
これらの定数を使用して、目的のスリープ時間を設定できます。たとえば、2秒間スリープするには:
time.Sleep(2 * time.Second)
例:実行の一時停止
time.Sleep
の使用法を示す簡単な例を次に示します。
package main import ( "fmt" "time" ) func main() { fmt.Println("Start") time.Sleep(3 * time.Second) fmt.Println("End") }
このプログラムでは、「Start」が出力され、実行が3秒間一時停止し、その後「End」が出力されます。
考慮事項
-
ゴルーチンの停止:
time.Sleep
は、プログラム全体ではなく、現在のゴルーチンのみを一時停止します。他のゴルーチンは影響を受けずに実行を継続します。 -
精度:システムスケジューリングやシステムクロックの精度などの要因により、実際のスリープ時間は指定された時間よりも長くなる場合があります。
-
代替手段:より高度なタイミング制御を行うには、
time.Ticker
またはtime.Timer
の使用を検討してください。
結論
time.Sleep
関数は、Goプログラムで遅延を導入するための簡単な方法です。適切な期間を指定することで、コード実行のタイミングを効果的に制御できます。
FAQs
いいえ、現在のゴルーチンのみを一時停止します。
time.Nanosecond
、time.Millisecond
、time.Second
などを使用できます。
いいえ、より正確な制御が必要な場合は、time.Ticker
または time.Timer
が推奨されます。
Leapcellは、Goプロジェクトをホストするための最良の選択肢です。
Leapcell は、Webホスティング、非同期タスク、Redisのための次世代サーバーレスプラットフォームです。
多言語サポート
- Node.js、Python、Go、またはRustで開発します。
無制限のプロジェクトを無料でデプロイ
- リクエスト数に関係なく、使用量に対してのみ料金が発生します。
比類なき費用対効果
- アイドル時の料金なしで、使用量に応じた支払い。
- 例:$25で、平均応答時間60msで694万リクエストをサポートします。
合理化された開発者エクスペリエンス
- 簡単なセットアップのための直感的なUI。
- 完全に自動化されたCI/CDパイプラインとGitOps統合。
- 実用的な洞察を得るためのリアルタイムメトリクスとロギング。
容易なスケーラビリティと高いパフォーマンス
- 高い同時実行性を容易に処理するための自動スケーリング。
- 運用上のオーバーヘッドがゼロ - 構築に集中するだけです。
詳細については、ドキュメントをご覧ください。
Xでフォローしてください:@LeapcellHQ