package utils

// 安全关闭 chan
func ChanSafeWrite[T any](ch chan T, value T) (isClosed bool) {
	defer func() {
		if recover() != nil {
			// 在panic后,会进入这个if中,然后将返回值改变为true,代表通道是关闭的
			isClosed = true
		}
	}()

	ch <- value  // 如果通道关闭,这里会报panic
	return false // 如果可以正常写入,这里会返回false,代表通道不是关闭的
}