首页 > 其他分享 >golang 闭包,装饰器

golang 闭包,装饰器

时间:2023-06-13 10:44:36浏览次数:43  
标签:闭包 func2 string fmt golang suffix func 装饰 name

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

标签:闭包,func2,string,fmt,golang,suffix,func,装饰,name
From: https://www.cnblogs.com/heris/p/17476852.html

相关文章

  • golang之fmt格式化
    常用fmt中用于格式化的占位符 普通占位符占位符说明举例输出%v相应值的默认格式。Printf("%v",people){zhangsan},%+v打印结构体时,会添加字段名Printf("%+v",people){Name:zhangsan......
  • 闭包
    1、定义指能够访问另一个函数作用域中的变量的一个函数(定义在一个函数内部的函数)2、作用(1)防止全局污染(2)利用其可突破作用域链,将函数内部的变量和方法传递到外部,让外部函数可以访问到内部函数的变量和方法3、优点(1)形成闭包的函数在执行之后,不会被回收,依旧存在内存中(2)私有变......
  • Python | 装饰器
    前言其实装饰器就是类似于女孩子的发卡。你喜欢的一个女孩子,她可以有很多个发卡,而当她戴上不同的发卡,她的头顶上就是装饰了不同的发卡。但是你喜欢的女孩子还是你喜欢的女孩子。如果还觉得不理解的话,装饰器就是咱们的手机壳,你尽管套上了手机壳,但并不影响你的手机功能,可你的手机还......
  • 设计模式之装饰者模式--钢铁侠的形成
    前言本文主要讲述java常见设计模式之装饰者模式,文中使用通俗易懂的案例,使你更好的学习本章知识点并理解原理,做到有道无术。一.什么是装饰者模式装饰者模式是23种设计模式中结构型模式的一种,它的核心思想是在不必改变类文件及不使用继承的情况下,通过装饰者包裹目标对象,动态地扩......
  • Golang 应用脚手架
    Nunu提供了全面的文档和示例,帮助你快速入门。它还包括一套测试套件,确保你的应用程序按预期工作。安装要求要使用Nunu,你需要在系统上安装以下软件:Golang1.16或更高版本GitMySQL5.7或更高版本(可选)Redis(可选)安装你可以通过一行命令安装Nunu:1goinstall......
  • golang之channel的使用
    golang之channel的使用在当今快速发展的软件开发领域,使用高效且可靠的编程语言变得尤为重要。而golang(又称Go语言)正是一种备受欢迎的编程语言,它的简洁、高效以及并发处理能力使得它在开发者中越来越受欢迎。在本文中,我们将探讨golang中的一个重要特性——channel,并介绍如何利用它......
  • 第9章 装饰模式(Decorator Pattern)
    装饰模式(DecoratorPattern)——.NET设计模式系列之十Terrylee,2006年3月概述在软件系统中,有时候我们会使用继承来扩展对象的功能,但是由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀。如......
  • Golang全栈开发----Golang基础知识
    第一章基础语法1.注释注释就是对代码的解释和说明,其目的是让人们能够更加轻松地了解代码。注释是开发人员一个非常重要的习惯,也是专业的一种表现。单行注释是最常见的注释形式,你可以在任何地方使用以//开头的单行注释。多行注释也叫块注释,均已以/*开头,并以*/结尾。单行......
  • trc golang 进程请求追踪包
    trc是一个方便的golang进程请求追踪框架,可以提供方便的请求追踪查看参考使用代码来说官方示例,完整的可以查看官方packagemain import("context""fmt""log""math/rand""net/http""net/http/httptest"_"net/http/pprof""strings""t......
  • Golang 定时任务 github/robfig/cron/v3
    robfig/cron/v3 是一个Golang的定时任务库,支持cron表达式。低耦合高内聚,其中涉及装饰器模式,并发处理等。packagemainimport"github.com/robfig/cron/v3"c:=cron.New()//添加一个任务,每30分钟执行一次c.AddFunc("30****",func(){fmt.Println("Everyho......