Closed cpunion closed 4 days ago
Maybe relate to interface, the code below is OK:
package main
type Tuple[T any] struct {
v T
}
func (t Tuple[T]) Get() T {
return t.v
}
type Future[T any] func(func(T))
func (f Future[T]) Then(callback func(T)) {
f(callback)
}
func Async[T any](fn func(func(T))) Future[T] {
return func(chain func(T)) {
fn(func(v T) {
chain(v)
})
}
}
func ReadFile(fileName string) Future[Tuple[error]] {
return Async[Tuple[error]](func(resolve func(Tuple[error])) {
resolve(Tuple[error]{v: nil})
})
}
func main() {
func(resolve func(Tuple[error])) {
resolve(Tuple[error]{v: nil})
}(func(v Tuple[error]) {
println(v.Get())
})
}