build: separate compiler and libs
This commit is contained in:
63
compiler/cl/_testrt/closureconv/in.go
Normal file
63
compiler/cl/_testrt/closureconv/in.go
Normal file
@@ -0,0 +1,63 @@
|
||||
package main
|
||||
|
||||
type Func func(a int, b int) int
|
||||
type Func2 func(a int, b int) int
|
||||
|
||||
type Call struct {
|
||||
fn Func
|
||||
n int
|
||||
}
|
||||
|
||||
func (c *Call) add(a int, b int) int {
|
||||
return a + b + c.n
|
||||
}
|
||||
|
||||
func add(a int, b int) int {
|
||||
return a + b
|
||||
}
|
||||
|
||||
func demo1(n int) Func {
|
||||
m := &Call{n: n}
|
||||
m.fn = m.add
|
||||
return m.fn
|
||||
}
|
||||
|
||||
func demo2() Func {
|
||||
m := &Call{}
|
||||
return m.add
|
||||
}
|
||||
|
||||
func demo3() Func {
|
||||
return add
|
||||
}
|
||||
|
||||
func demo4() Func {
|
||||
return func(a, b int) int { return a + b }
|
||||
}
|
||||
|
||||
func demo5(n int) Func {
|
||||
return func(a, b int) int { return a + b + n }
|
||||
}
|
||||
|
||||
func main() {
|
||||
n1 := demo1(1)(99, 200)
|
||||
println(n1)
|
||||
|
||||
n2 := demo2()(100, 200)
|
||||
println(n2)
|
||||
|
||||
n3 := demo3()(100, 200)
|
||||
println(n3)
|
||||
|
||||
n4 := demo4()(100, 200)
|
||||
println(n4)
|
||||
|
||||
n5 := demo5(1)(99, 200)
|
||||
println(n5)
|
||||
|
||||
var fn func(a int, b int) int = demo5(1)
|
||||
println(fn(99, 200))
|
||||
|
||||
var fn2 Func2 = (Func2)(demo5(1))
|
||||
println(fn2(99, 200))
|
||||
}
|
||||
Reference in New Issue
Block a user