adding_func_to_func.go
package attaching_func_to_a_func
import "fmt"
//在Go中,func(函数)也是一种类型,你可以给它指定一个类型名称、增加方法
type IO func(input string)string
//给函数增加方法
func (io IO) Print(input string){
o := io(input)
fmt.Println("IN: ",input)
fmt.Println("OUT: ",o)
}
adding_func_to_func_test.go
package attaching_func_to_a_func
import (
"fmt"
"reflect"
"strings"
"testing"
)
func TestFuncRun(t *testing.T){
m := IO(func(i string) string {//函数执行逻辑
r := strings.Replace(i, "lower", "upper", 1)
return strings.ToUpper(r)
})
fmt.Println("type:",reflect.TypeOf(m))//type: attaching_func_to_a_func.IO
m.Print("hi,this is lower case")
/*
输出结果:
IN: hi,this is lower case
OUT: HI,THIS IS UPPER CASE
*/
t.Logf("Pass!")
}
函数也是一种类型
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 1.当代种种事件不同于历史之处,在于我们不知道它们会产生什么后果。 2.经验和利益的偶然结合,往往会向人们揭示...