我很少有这样声明的 C 函数
CURLcode curl_wrapper_easy_setopt_long(CURL* curl, CURLoption option, long param); CURLcode curl_wrapper_easy_setopt_str(CURL* curl, CURLoption option, char* param);
我想将这些公开为一个像这样的 Go 函数
func (e *Easy)SetOption(option Option, param interface{})
所以我需要能够在运行时检查参数类型。我该怎么做,这是个好主意吗(如果不是这种情况下的好做法)?
似乎 Go 有专门用于此的特殊形式的开关(称为类型 switch):
func (e *Easy)SetOption(option Option, param interface{}) { switch v := param.(type) { default: fmt.Printf("unexpected type %T", v) case uint64: e.code = Code(C.curl_wrapper_easy_setopt_long(e.curl, C.CURLoption(option), C.long(v))) case string: e.code = Code(C.curl_wrapper_easy_setopt_str(e.curl, C.CURLoption(option), C.CString(v))) } }