まえおき
最近 Golang を学習し始めた。
良い題材が浮かばなかったので、少し前に流行った Sleep Sort を実装してみた。
やってみた
package main
import (
"fmt"
"time"
)
func main() {
array := []int{5, 3, 6, 3, 6, 3, 1, 4, 7}
c := make(chan int)
for _, v := range array {
s := v
go func() {
time.Sleep(time.Duration(s) * time.Second)
c <- s
}()
}
for _ = range array {
fmt.Printf("%d\n", <-c)
}
}
正直、学習し始めなので良し悪しの判断がつかない...
詳しい方教えてください!
元ネタ
【ネタ】Swift で Sleep Sort
【ネタ】JavaScriptでSleep Sort
【ネタ】Java で Sleep Sort
【ネタ】PythonでSleep Sort
【ネタ】Pythonでスレッドセーフな Sleep Sort関数 (threading編)
【ネタ】SmalltalkでスレッドセーフなSleepSort
参考にさせていただきました
golang チートシート
Goルーチンで並行化する方法: 6秒かかる処理を3秒にしよう
Golang Goの並列処理を学ぶ(goroutine, channel)
Goのforとgoroutineでやりがちなミスとたった一つの冴えたgo vetと