package mainimport "fmt"type S struct {}func (s *S) Service1(name string) { fmt.Println("Service 1",name)}func (s *S) Service2(name string) { fmt.Println("Service 2",name)}func (s *S) Service3(name string) { fmt.Println("Service 3",name)}func newService() *S { return &S{}}func withService(fn func(s *S)) func() { return func() { fn(newService()) }}func main() { withService(func(s *S) { s.Service1("first") })() withService(func(s *S) { s.Service2("second") })() withService(func(s *S) { s.Service3("third") })()}2.中间件
package mainimport ( "fmt" "time")func work(name string) { fmt.Println("hello ",name) time.Sleep(time.Second)}func calTime(f func(name string)) func(string) { t := time.Now() return func(n string) { defer func() { fmt.Println("time spend is ",time.Since(t)) }() f(n) }}func main() { s := calTime(work) s("world")}总结
以上是内存溢出为你收集整理的golang 函数的特殊用法全部内容,希望文章能够帮你解决golang 函数的特殊用法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)