golang函数的特殊用法(代码片段)

alin-qu alin-qu     2022-12-13     550

关键词:

1.可以复用一些写法。经常在单元测试过程中需要new一些对象可以new的操作抽离出来

package main

import "fmt"

type S struct 


func (s *S) Service1(name string) 
    fmt.Println("Service 1", name)


func (s *S) Service2(name string) 
    fmt.Println("Service 2", name)


func (s *S) Service3(name string) 
    fmt.Println("Service 3", name)


func newService() *S 
    return &S


func withService(fn func(s *S)) func() 
    return func() 
        fn(newService())
    


func main() 
    withService(func(s *S) 
        s.Service1("first")
    )()
    withService(func(s *S) 
        s.Service2("second")
    )()
    withService(func(s *S) 
        s.Service3("third")
    )()

2.中间件

package main

import (
    "fmt"
    "time"
)

func work(name string) 
    fmt.Println("hello ", name)
    time.Sleep(time.Second)


func calTime(f func(name string)) func(string) 
    t := time.Now()
    return func(n string) 
        defer func() 
            fmt.Println("time spend is ", time.Since(t))
        ()
        f(n)
    


func main() 
    s := calTime(work)
    s("world")

golang三个点(threedots)的用法(代码片段)

...发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/137在Golang中,三个点一共会用在四个地方(话说三个点的官方说法是什么?):变长的函数参数如果最后一个函数参数的类型的是...T,那么在调用这个函数的时候,我们可以在参... 查看详情

golang的strings包用法(代码片段)

转载自https://blog.csdn.net/chenbaoke/article/category/2511389/3?strings包:  https://studygolang.com/static/pkgdoc/pkg/strings.htm import"strings"strings包实现了用于操作字符的简单函数。   &n 查看详情

golang"..."用法(代码片段)

Golang的一种语法糖,大抵有三种用法:当函数函数需要传入多个不定参数时,...可以接受多个不确定数量的参数将切片中元素打散进行传递定义数组时,表示参数不定,suchas:[...]intpackagemainimport"fmt"//当函数函数需要传入... 查看详情

golang中fmt用法(代码片段)

fmt包实现了格式化的I/O函数,这点类似C语言中的printf和scanf,但是更加简单. 占位符:通用占位符: %v 值的默认格式。当打印结构体时,“加号”标记(%+v)会添加字段名%#v 相应值的Go... 查看详情

golang入门:切片(slice)(代码片段)

切片(slice)是Golang中一种比较特殊的数据结构,这种数据结构更便于使用和管理数据集合。切片是围绕动态数组的概念构建的,可以按需自动增长和缩小。切片的动态增长是通过内置函数append()来实现的,这个函数可以快速且高效... 查看详情

matlab二维绘图其他特殊的二维绘图函数介绍及用法(代码片段)

MATLAB二维绘图(四)其他特殊的二维绘图函数介绍及用法1、使用semilogy、semilogx和loglog绘制指数函数的图像,示例:%%对指数进行绘图,使用不同的绘图函数clear;clc;closeall;x=logspace(-1,1,100);%产生间距,在10^-1到10^1的100个点y=x.^2;subplot(2... 查看详情

golang反射常见用法(代码片段)

 一直都知道golang的反射语法,但是对于什么场景下使用reflect反射没有概念,肝了两个晚上,整理了下用到过的场景:1、框架接口的入参。2、基类寻找子类的类型,并调用其变量、方法。下面代码,包含了常见reflect的使用... 查看详情

golang碎片整理之fmt.scan(代码片段)

本文介绍了从golang语言中fmt包从标准输入获取数据的Scan系列函数、从io.Reader中获取数据的Fscan系列函数以及从字符串中获取数据的Sscan系列函数的用法。Scan系列go语言fmt包下有fmt.Scan、fmt.Scanf、fmt.Scanln三个函数,可以在程序运行... 查看详情

golang入门:切片(slice)(代码片段)

切片(slice)是Golang中一种比较特殊的数据结构,这种数据结构更便于使用和管理数据集合。切片是围绕动态数组的概念构建的,可以按需自动增长和缩小。切片的动态增长是通过内置函数append()来实现的,这个函数可以快速且高效... 查看详情

golang三个点'...'的用法(代码片段)

packagemainimport"fmt"funcmain()fmt.Println("Hello,World!")aaa:=[]string"111","222","333"bbb:=[]string"aaa","bbb","ccc"fmt.Println(append(aaa,bbb...))运行结果:Hello,World![111222333aaabbbccc]  查看详情

golang反射(代码片段)

GoLang反射reflect包实现了运行时反射,允许程序操作任意类型的对象。典型用法是用静态类型interface保存一个值,通过调用TypeOf获取其动态类型信息,该函数返回一个Type类型值。调用ValueOf函数返回一个Value类型值,... 查看详情

golang:omitempty用法(代码片段)

在struct转json时,omitempty字段的值如果是该字段类型的零值,则忽略该字段。例:packagemainimport"fmt"import"encoding/json"typeUserstruct Namestring`json:"name"` Ageint`json: 查看详情

golang:iota用法(代码片段)

const( a1=iota //0 a2 //1 a3 //2 _ //3,但是被忽略了 a5 //4)const( a1=iota //0 a2=100 //100本来应该是1,但是被人为赋值为100了,所以是100 a3=iota //2 a4 //3)//同一行复用iota不会使值变化.(iota的值只与常量声明的行数相关)const( 查看详情

gson的特殊用法(代码片段)

1.gson包在处理字符串转Map或者List的方法。ListMap<String,User>map=gson.fromJson(str,newTypeToken<Map<String,User>>().getType());2.Gson的tojson方法特殊字符‘‘<>等的转换问题Gsongson=newGsonBuilder().setPre 查看详情

golang设计模式之选项模式(代码片段)

...参数即可,类似于python里面的默认参数和字典参数,虽然golang里面既没有默认参数也没有字典参数,但是我们有选项模式可变长参数列表在这之前,首先需要介绍一下可变长参数列表,顾名思义,就是参数的个数不固定,可以是... 查看详情

golang入门到项目实战|golang函数(代码片段)

golang函数简介函数的go语言中的一级公民,我们把所有的功能单元都定义在函数中,可以重复使用。函数包含函数的名称、参数列表和返回值类型,这些构成了函数的签名(signature)。go语言中函数特性go语言... 查看详情

字典的一些特殊用法(代码片段)

 一. 1个键对应多个值比如:d=‘a‘:[1,2,3], ‘b‘:[4,5],可以使用collections模块中的defaultdict来构造这样的字典fromcollectionsimportdefaultdict#对应的多个值是列表形式d=defaultdict(list)d[‘a‘].append(1)d[‘a‘].append(2)d[‘b‘].app 查看详情

python面向对象-高级用法(代码片段)

1.魔法函数python中常见的内置类型什么是魔法函数?python的魔法函数总被双下划线包围,它们可以给你的类增加特殊的方法。如果你的对象实现了这些方法中的一个,那么这个方法就会在特殊情况下被调用,你可以定义想要的行... 查看详情