Golang Go语言中的一個簡單的函數式參數合併 helper

Golang 常用的函數式參數範式最早由 Rob Pike 提出

使用這種模式的時候我們經常要重複類似下面這段代碼:

opts := new(optionsT)
for _, f := range options {
    f(opts)
}

現在借助泛型,我寫了一個幾行代碼的 helper 來化簡:

import "gopkg.in/option.v0"
opts := option.New(options)

當你有很多使用這個範式的函數的時候,這個 helper 用起來能省一些事情。 之前我是每個項目裏面都會直接存一份這個 helper ,但是後來發現用得太多了,就專門弄成一個庫可以直接 import 了。


Golang Go语言中的一個簡單的函數式參數合併 helper

更多关于Golang Go语言中的一個簡單的函數式參數合併 helper的实战教程也可以访问 https://www.itying.com/category-94-b0.html

5 回复

Go 的语法快要改的不认识了

更多关于Golang Go语言中的一個簡單的函數式參數合併 helper的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


比我好,我已经不认识了

其实挺好的,以前写代码总感觉束手束脚,现在加了泛型灵活多了

gopkg.in 链接怎么搞得

在Go语言中,实现一个简单的函数式参数合并(helper)功能,可以通过编写一个通用的函数来完成。这个函数接受可变数量的参数,并将它们合并成一个切片或其他合适的数据结构返回。这在处理可变数量的参数时非常有用,尤其是在设计API或需要灵活处理输入参数时。

以下是一个简单的示例,展示了如何实现一个函数式参数合并的helper:

package main

import (
    "fmt"
    "reflect"
)

// MergeParams 合并任意类型的可变参数,返回一个[]interface{}
func MergeParams(params ...interface{}) []interface{} {
    return params
}

func main() {
    // 示例使用
    intParam := 1
    strParam := "hello"
    boolParam := true
    
    merged := MergeParams(intParam, strParam, boolParam)
    
    // 使用反射来打印合并后的参数类型和值
    for _, param := range merged {
        fmt.Printf("Type: %s, Value: %v\n", reflect.TypeOf(param).Kind(), param)
    }
}

在这个例子中,MergeParams函数接受任意数量的参数(通过...interface{}实现),并将它们作为一个[]interface{}切片返回。在main函数中,我们展示了如何使用MergeParams来合并不同类型的参数,并通过反射打印出每个参数的类型和值。

这种方法灵活且易于理解,适用于多种场景,特别是当你需要处理不确定数量的参数时。

回到顶部