0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Go言語学習】chan struct{}

Last updated at Posted at 2024-05-10

この意味不明なコードは何なんだ?
と思ったら、Go言語の仕様上、struct{}はゼロサイズのデータを表すものとのこと。
つまりメモリを消費しないものを表している。
ただし、変数やチャネルで使用した場合、これらを管理するためのメモリは当然消費される。
チャネルで使用する場合、目的はデータのやり取りで無く、ゴルーチンの同期が目的になる。

package main

import (
	"fmt"
	"time"
)

func main() {
	doneCh := make(chan struct{})

	go func() {
		time.Sleep(2 * time.Second) // 何かの処理を模擬
		close(doneCh) // 処理が終了したらチャネルを閉じる
	}()

	fmt.Println("Waiting for the goroutine to finish...")

	<-doneCh // チャネルが閉じられるまで待つ

	fmt.Println("The goroutine has finished!")
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?