在 Go 中传递任何类型的惯用方式(同时保持编译时类型检查?)

我正在解析一个表单并编写了许多函数func parseAndValidateX(val string) (T, err),其中 T 是任何类型。


现在我想写一个闭包func  catchError(T, Error) T,以便我可以执行以下操作:


errors []Error


func catchError(val T, err Error) T {

    if err != nil {

        //append err to errors

    }

    return val

}



data = MyStruct {

Age = catchError(parseAndValidateAge("5")) // Age is a int

DistanceFromHome = catchError(parseAndValidatePi("3.14")) // DistanceFromHome is a float

Location = catchError(parseAndValidatePi("3.14,2.0")) //Location is a custom Struct

}


if len(errors) > 0 {

    // o, oh

}

这在 Go 中可能吗?如何轻松/惯用地做到这一点?


不负相思意
浏览 171回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go