博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Golang闭包案例分析与普通函数对比
阅读量:4576 次
发布时间:2019-06-08

本文共 1221 字,大约阅读时间需要 4 分钟。

闭包案例

package mainimport (    "fmt"    "strings"  //记住一定引入strings包)//①编写一个函数makeSuffix,可以接收一个文件后缀名(比如.jpg),并返回一个闭包//②调用闭包,可以传入一个文件名,如果该文件名没有指定的后缀(如.jpg),则返回.jpg,如果有则全称//③要求使用闭包方式//④strings.HasSuffix该函数可以来判断某个字符串是否有指定后缀func makeSuffix (suffix string) func (string) string {    return func (name string) string {        if !strings.HasSuffix(name, suffix) {            return name + suffix  //如果没有后缀就拼接        }        return name    }} func main(){      //先返回一个闭包    test := makeSuffix(".jpg")    fmt.Println("文件名处理后:", test("go语言圣经"))      fmt.Println("文件名处理后:", test("PHP设计模式.jpg"))}
D:\goproject\src\main>go run hello.go文件名处理后: go语言圣经.jpg文件名处理后: PHP设计模式.jpg

 说明

以上代码返回的是一个函数,这个函数引用的是suffix,而suffix是函数外的变量,那么这个函数外的suffix和返回的函数构成闭包。

普通函数

//传递根据哪个后缀判断,其次是文件名字func makeSuffix (suffix string, name string) string {    if !strings.HasSuffix(name, suffix) {        return name + suffix  //如果没有后缀就拼接    }    return name} func main(){    fmt.Println("文件名处理后:", makeSuffix("jpg","go语言圣经"))      fmt.Println("文件名处理后:", makeSuffix("jpg","PHP设计模式.jpg"))}
D:\goproject\src\main>go run hello.go文件名处理后: go语言圣经jpg文件名处理后: PHP设计模式.jpg

对比说明

闭包函数只需要传递一次要测试的jpg后缀;用普通函数的话,传递完成后缀会消失,闭包会保存。

转载于:https://www.cnblogs.com/wt645631686/p/9495123.html

你可能感兴趣的文章
MySQL_入手<二>之删--改--查
查看>>
MySQL创表--分页--自关联--
查看>>
python基础_面向对象进阶
查看>>
GitHub从小白到熟悉<一>
查看>>
测试基础_<一>
查看>>
定义页面加载和导航时要执行的函数/自定义事件
查看>>
rem.js
查看>>
Unslider.js Tiny Sample
查看>>
FPGA的学习及注意事项
查看>>
面向对象内存分析
查看>>
Dijkstra BZOJ2763 [JLOI2011]飞行路线
查看>>
前端快捷键
查看>>
重新认识成功、失败、错误、平凡、笨拙
查看>>
【模板】Hash
查看>>
洛谷 1485 火枪打怪
查看>>
Fortran编译器
查看>>
初识go
查看>>
省市县三级联动
查看>>
多IP地址--笔记
查看>>
三级菜单小练习
查看>>