LoginSignup
1
0

More than 1 year has passed since last update.

Go言語の特徴満点なHello world

Last updated at Posted at 2020-11-01

以前ツイートしていたGo言語の特徴満点なHello worldを、Qiita記事とて残しておきます。

"Hello, #番号 world" を0〜99番、goroutineで並列処理して表示させる、というシンプルな目標を実装しているだけです。しかし、意外とGo言語の中枢に踏み込むコードが必要で、面白いです。

チャネルを使わないと途中で終わっちゃいますし、ちゃんとgoroutineに引数を渡してあげないと番号が重なってしまいます。実はツイートした時はこれらの対応をしておらず、今回記事化するために真面目に実行してみて、途中で終わっているとか変なことに気付きました。笑

ソース

package main

import "fmt"

func main() {
    max := 100
    quit := make(chan bool, max)
    for i := 0; i < max; i++ {
        go func(j int) {
            fmt.Printf("Hello, #%v world\n", j)
            quit <- true
        }(i)
    }
    for i := 0; i < max; i++ {
        <- quit
    }
}

実行結果

Hello, #4 world
Hello, #0 world
Hello, #1 world
Hello, #14 world
Hello, #16 world
Hello, #15 world
Hello, #20 world
Hello, #9 world
Hello, #5 world
Hello, #3 world
Hello, #6 world
Hello, #17 world
Hello, #21 world
Hello, #18 world
Hello, #12 world
Hello, #7 world
Hello, #11 world
Hello, #10 world
Hello, #23 world
Hello, #19 world
Hello, #2 world
Hello, #22 world
Hello, #24 world
Hello, #8 world
Hello, #25 world
Hello, #63 world
Hello, #27 world
Hello, #59 world
Hello, #28 world
Hello, #60 world
Hello, #66 world
Hello, #99 world
Hello, #67 world
Hello, #62 world
Hello, #68 world
Hello, #44 world
Hello, #85 world
Hello, #87 world
Hello, #58 world
Hello, #33 world
Hello, #72 world
Hello, #39 world
Hello, #45 world
Hello, #41 world
Hello, #74 world
Hello, #90 world
Hello, #36 world
Hello, #46 world
Hello, #91 world
Hello, #47 world
Hello, #26 world
Hello, #55 world
Hello, #71 world
Hello, #97 world
Hello, #57 world
Hello, #75 world
Hello, #76 world
Hello, #37 world
Hello, #92 world
Hello, #43 world
Hello, #13 world
Hello, #61 world
Hello, #65 world
Hello, #32 world
Hello, #38 world
Hello, #31 world
Hello, #54 world
Hello, #98 world
Hello, #48 world
Hello, #94 world
Hello, #49 world
Hello, #77 world
Hello, #95 world
Hello, #89 world
Hello, #93 world
Hello, #51 world
Hello, #56 world
Hello, #70 world
Hello, #88 world
Hello, #73 world
Hello, #34 world
Hello, #35 world
Hello, #52 world
Hello, #42 world
Hello, #79 world
Hello, #82 world
Hello, #53 world
Hello, #64 world
Hello, #83 world
Hello, #78 world
Hello, #96 world
Hello, #80 world
Hello, #86 world
Hello, #30 world
Hello, #40 world
Hello, #29 world
Hello, #69 world
Hello, #84 world
Hello, #81 world
Hello, #50 world
1
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
1
0