6. golang之闭包的最佳实践

1. 基本介绍

请编写一个程序,具体要求如下:

1)编写一个函数makeSuffix(suffix string) 可以接收一个文件后缀名(比如.jpg),并返回一个闭包

2)调用闭包,可以传入一个文件名,如果该文件名没有指定的后缀(比如:.jpg),则返回文件名.jpg,如果已经有.jpg后缀,则返回原文件名。

3)要求使用闭包的方式完成

4)strings.HasSuffix,该函数可以判断某个字符串是否有指定的后缀

package main
import (
	"fmt"
	"strings"
)

// 具体要求如下:、
// 1) 编写一个函数makeSuffix(suffix string),可以接收一个文件后缀名(比如.jpg),并返回一个闭包
// 2) 调用闭包,可以传入一个文件名,如果该文件名没有指定的后缀(比如.jpg),则返回 文件名.jpg,如果已经有.jpg后缀,则返回原文件名
// 3) 要求使用闭包的方式完成
// 4) strings.HasSuffix,则函数可以判断某个字符串是否有指定的后缀。

func makeSuffix(suffix string) func(string) string {
	return func(name string) string {
		// 如果 name  没有指定后缀,则加上,否则就返回原来的name
		if !strings.HasSuffix(name, suffix) {
			return name + suffix
		}
		return name
	}
}

func main() {
	// 测试makeSuffix 的使用
	f2 := makeSuffix(".jpg")
	fmt.Println("文件名处理后=",f2("winter"))
	fmt.Println("文件名处理后=",f2("brid.jpg"))
}

上面代码的总结和说明

1) 返回的匿名函数和makeSuffix(suffix string) 的suffix变量,组合成一个闭包,因为返回的函数引用到suffix这个变量

2)闭包的好处:如果使用传统方法,也可以轻松实现这个功能,但是传统方法需要每次都传入 后缀名,比如 .jpg,而闭包因为可以保留上次引用的某个值,所以我们传入一次就可以反复使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值