golang 闭包,装饰器

package main

import (
	"fmt"
	"strings"
)

func makeSuffixFunc(suffix string) func(string) string {
	return func(name string) string {
		if !strings.HasSuffix(name, suffix) {
			return name + suffix
		}
		return name
	}
}

func main() {
	func1 := makeSuffixFunc(".bmp")
	func2 := makeSuffixFunc(".jpg")

	fmt.Println(func1, func2)
	fmt.Println(func1("hello12.bmp"))
	fmt.Println(func2("name"))
}

输出:

0x29b9c0 0x29b920
hello12.bmp
name.jpg
posted @ 2023-06-13 10:35  ty1539  阅读(15)  评论(0编辑  收藏  举报