最佳答案
我正在将一个 C 库移植到 Go 中,一个 C 函数(带有 varargs)是这样定义的:
curl_easy_setopt(CURL *curl, CURLoption option, ...);
所以我创建了包装 C 函数:
curl_wrapper_easy_setopt_str(CURL *curl, CURLoption option, char* param);
curl_wrapper_easy_setopt_long(CURL *curl, CURLoption option, long param);
如果我像这样定义 Go 中的函数:
func (e *Easy)SetOption(option Option, param string) {
e.code = Code(C.curl_wrapper_easy_setopt_str(e.curl, C.CURLoption(option), C.CString(param)))
}
func (e *Easy)SetOption(option Option, param long) {
e.code = Code(C.curl_wrapper_easy_setopt_long(e.curl, C.CURLoption(option), C.long(param)))
}
Go 编译器抱怨道:
*Easy·SetOption redeclared in this block
那么 Go 支持函数(方法)重载吗,还是这个错误意味着其他什么?