From 90c1c5c344e86a66d3e1fb65710448043d939def Mon Sep 17 00:00:00 2001 From: Shikong <919411476@qq.com> Date: Tue, 21 Sep 2021 01:55:46 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=87=BD=E6=95=B0=E7=B1=BB=E5=9E=8B=20?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E3=80=81=E8=BF=94=E5=9B=9E=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base/function/type/main.go | 52 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 base/function/type/main.go diff --git a/base/function/type/main.go b/base/function/type/main.go new file mode 100644 index 0000000..8996e0c --- /dev/null +++ b/base/function/type/main.go @@ -0,0 +1,52 @@ +package main + +import ( + "fmt" + "strconv" +) + +func f1() { + fmt.Println("exec f1()") +} + +func f2() string { + return fmt.Sprintln("exec f2()") +} + +// 函数 也可作为 参数 的类型 +func f3(f func() string) { + fmt.Println("exec f3()") + fmt.Printf(f()) +} + +// 函数 还可以作为 返回值 类型 +func f4(x, y int) func() string { + return func() string { + return "inner func: " + strconv.Itoa(x+y) + "\n" + } +} + +func main() { + // 函数类型 参数 + mf1 := f1 + mf1() + fmt.Printf("mf1: %T\n", mf1) + + fmt.Println("=========================================================") + + mf2 := f2 + fmt.Printf(mf2()) + fmt.Printf("mf2: %T\n", mf2) + + fmt.Println("=========================================================") + + mf3 := f3 + mf3(mf2) + fmt.Printf("mf3: %T\n", mf3) + + fmt.Println("=========================================================") + + mf3(f4(2, 2)) + fmt.Printf("f4: %T\n", f4) + +}