Initial commit: Go 1.23 release state
This commit is contained in:
91
test/func5.go
Normal file
91
test/func5.go
Normal file
@@ -0,0 +1,91 @@
|
||||
// run
|
||||
|
||||
// Copyright 2009 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// Test functions and goroutines.
|
||||
|
||||
package main
|
||||
|
||||
func caller(f func(int, int) int, a, b int, c chan int) {
|
||||
c <- f(a, b)
|
||||
}
|
||||
|
||||
func gocall(f func(int, int) int, a, b int) int {
|
||||
c := make(chan int)
|
||||
go caller(f, a, b, c)
|
||||
return <-c
|
||||
}
|
||||
|
||||
func call(f func(int, int) int, a, b int) int {
|
||||
return f(a, b)
|
||||
}
|
||||
|
||||
func call1(f func(int, int) int, a, b int) int {
|
||||
return call(f, a, b)
|
||||
}
|
||||
|
||||
var f func(int, int) int
|
||||
|
||||
func add(x, y int) int {
|
||||
return x + y
|
||||
}
|
||||
|
||||
func fn() func(int, int) int {
|
||||
return f
|
||||
}
|
||||
|
||||
var fc func(int, int, chan int)
|
||||
|
||||
func addc(x, y int, c chan int) {
|
||||
c <- x+y
|
||||
}
|
||||
|
||||
func fnc() func(int, int, chan int) {
|
||||
return fc
|
||||
}
|
||||
|
||||
func three(x int) {
|
||||
if x != 3 {
|
||||
println("wrong val", x)
|
||||
panic("fail")
|
||||
}
|
||||
}
|
||||
|
||||
var notmain func()
|
||||
|
||||
func emptyresults() {}
|
||||
func noresults() {}
|
||||
|
||||
var nothing func()
|
||||
|
||||
func main() {
|
||||
three(call(add, 1, 2))
|
||||
three(call1(add, 1, 2))
|
||||
f = add
|
||||
three(call(f, 1, 2))
|
||||
three(call1(f, 1, 2))
|
||||
three(call(fn(), 1, 2))
|
||||
three(call1(fn(), 1, 2))
|
||||
three(call(func(a, b int) int { return a + b }, 1, 2))
|
||||
three(call1(func(a, b int) int { return a + b }, 1, 2))
|
||||
|
||||
fc = addc
|
||||
c := make(chan int)
|
||||
go addc(1, 2, c)
|
||||
three(<-c)
|
||||
go fc(1, 2, c)
|
||||
three(<-c)
|
||||
go fnc()(1, 2, c)
|
||||
three(<-c)
|
||||
go func(a, b int, c chan int) { c <- a+b }(1, 2, c)
|
||||
three(<-c)
|
||||
|
||||
emptyresults()
|
||||
noresults()
|
||||
nothing = emptyresults
|
||||
nothing()
|
||||
nothing = noresults
|
||||
nothing()
|
||||
}
|
||||
Reference in New Issue
Block a user