Programming

Goでpanic(string) すると recover()で取り出せるのがstringになる

panic()が返すのは空interfaceなので、panic(string)したらrecover()で取り出せるのはstringになる。 ググってみても、panic(string)してる例は結構たくさんあった。 package main import ( "fmt" "reflect" ) func main() { f() } func f() { defer func() …

GoのChannelをコピーしてコピー元のChannelをクローズするとコピー先のChannelもcloseされる

Goのプログラムを書いてたらはまってたのでメモしておく。 package main func main() { ch1 := make(chan struct{}) ch2 := ch1 close(ch1) close(ch2) } Result panic: close of closed channel goroutine 1 [running]: main.main() /tmp/sandbox237471277/…