{"blog_title":"\u96d1\u306a\u30e1\u30e2\u66f8\u304d","image_url":null,"width":"100%","author_name":"hiroyukim","blog_url":"https://hiroyukim.hatenablog.com/","author_url":"https://blog.hatena.ne.jp/hiroyukim/","provider_url":"https://hatena.blog","height":"190","title":"Go\u306e\u4e26\u884c\u51e6\u7406\u3092\u5b9f\u969b\u306b\u8a66\u3059(2)","published":"2019-01-19 18:31:49","description":"1-4-lockstep.go \u524d\u56de\u306egenerator\u306e\u7d9a\u304d generator\u304c\u5897\u3084\u305b\u308b\u8a71 \u9694\u96e2\u7a7a\u9593\u3092\u7c21\u5358\u306b\u4f5c\u308c\u308b\u8a33\u304b // Kevin Chen (2017) // Patterns from Pike's Google I/O talk, \"Go Concurrency Patterns\" // Golang channels as handles on a service (working in lockstep) package main import ( \"fmt\" \"time\" ) func main() { ch1 := generator(\"Hello\") ch2 := g\u2026","provider_name":"Hatena Blog","type":"rich","url":"https://hiroyukim.hatenablog.com/entry/2019/01/19/183149","categories":[],"version":"1.0","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fhiroyukim.hatenablog.com%2Fentry%2F2019%2F01%2F19%2F183149\" title=\"Go\u306e\u4e26\u884c\u51e6\u7406\u3092\u5b9f\u969b\u306b\u8a66\u3059(2) - \u96d1\u306a\u30e1\u30e2\u66f8\u304d\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>"}