自学内容网 自学内容网

go使用闭包处理数据

闭包的用处

闭包就是一个匿名函数,可以用来处理结构体返回值的封装,数值的比较等等

结构体返回值的封装

package main

import (
    "fmt"
    "strconv"
)

type Example struct {
    Options []string
}

func main() {
    //1
    fmt.Println(&Example{
       Options: func() []string { //2
          strs := []string{}
          for i := 0; i < 3; i++ {
             strs = append(strs, "hello"+strconv.Itoa(i))
          }
          return strs
       }(),
    })
}

如代码所示,想要给options赋值可以通过在1处定义一个变量赋值的方式,或者2处用闭包函数直接返回一个字符串的形式赋值,有时为了代码的规整性,可能选择2这种方式比较好一点,或者一些不太适宜1处样式赋值的场景选择2处赋值方式也是比较合理的

数值比较

type funcptr func(s string,strs []string) bool
func compare(s string,strs []string,funcptr2 funcptr) bool{
    return funcptr2(s,strs)
}

通过定义compare函数,传入funcptr2函数指针对应的匿名函数,类似于sort.slice()方法,在匿名函数中指定处理逻辑,然后根据返回的flag或者其他值做后续的处理

综上就是我目前所理解的闭包的两种常用方式,理解起来简单,但是使用的话还是需要比较多的技巧的


原文地址:https://blog.csdn.net/weixin_37078439/article/details/144324115

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!