sync.errgroupとcontext周りの実装見てたら今後もしかしたら何かに使うかもしれない実装方法があったのでメモっておく
package main
import "yourpath/etc"
func main() {
obj, die := etc.NewEtc()
obj.Oops()
die()
}
package etc
import "fmt"
type etc struct {}
type EtcFunc func()
func NewEtc() (*etc, EtcFunc) {
e := &etc{}
return e, func() { e.die() }
}
func (e *etc) Oops() {
fmt.Println("oops.")
}
func (e *etc) die() {
fmt.Println("call die.")
}
contextのほうだとcancelをこれで実現してたが、なんかほほーってなったので残し