加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Golang理解-函数变量

发布时间:2020-12-16 09:23:11 所属栏目:大数据 来源:网络整理
导读:5.2 函数变量--把函数作为值保存到变量中 在Golang中,函数也是一种类型,可以和其他类型一样被保存在变量中 func fire() { fmt.Println("fire") } func main(){ f := fire() // 将变量f声明为func()类型,此时f就被俗称为“回调函数”,此时f的值为nil f() } 5.

5.2 函数变量--把函数作为值保存到变量中
在Golang中,函数也是一种类型,可以和其他类型一样被保存在变量中
func fire() {
fmt.Println("fire")
}
func main(){
f := fire() // 将变量f声明为func()类型,此时f就被俗称为“回调函数”,此时f的值为nil
f()
}

5.3 字符串的链式处理--操作与数据分离的设计技巧
对数据的操作进行多步骤的处理被称为链式处理
1 字符串处理函数
字符串处理函数(StringProccess)需要外部提供数据源: 一个字符串切片(list []string),另外还需要提供一个链式处理函数的切片(chain []func(string) string)
package main

import (
"fmt"
"strings"
)

/
5.3 示例: 字符串的链式处理--操作与数据分离的设计
1 这种处理函数能够接受一个字符串输入,处理后输出
2 strings.ToLower()函数能够将传入的字符串的每个字符变为小写 func ToLower(s string) string
3 字符串处理函数StringProccess内部遍历每个数据源提供的字符串,每个字符串都要经过一系列链式处理后重新返回切片
/

// 字符串处理函数,传入字符串切片和处理链
func StringProccess(list []string,chain []func(string) string) {
// 遍历每一个字符串
for index,str := range list {
// 第一个需要处理的字符串
result := str
// 遍历每一个处理链
for _,proc := range chain {
// 输入一个字符串进行处理,返回数据作为下一个处理链的输入
result = proc(result)
}
// 将结果放回切片
list[index] = result
}
}

// 自定义处理函数
// 处理链函数即可以是系统提供的处理函数,也可以使用自定义的函数
// 自定义移除前缀的处理函数
func removePrefix(str string) string {
return strings.TrimPrefix(str,"go")
}

func main() {
// 提供待处理的字符串列表
list := []string{
"go scanner",
"go parser",
"go compiler",
"go printer",
"go formater",
}

// 处理函数链
chain := []func(string) string {
    removePrefix,strings.TrimSpace,strings.ToUpper,}

// 处理字符串
StringProccess(list,chain)

// 输出处理好的字符串
for _,str := range list {
    fmt.Printf(str)
}

}

/ 总结: 1 链式处理器是一种常见的编程设计.Netty是使用java语言编写的一款异步事件驱动的网络应用程序框架,支持快速开发可维护的高性能的面向协议的服务器和客户端,Netty中就有类似的链式处理器的设计. 2 链式处理的开发思想将数据和操作拆分,解耦,让开发者可以根据自己的技术优势和需求,进行系统开发,同时将自己的开发成果共享给其他的开发 /

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读