回答

收藏

Go语言如何在运行时检查变量类型

技术问答 技术问答 268 人阅读 | 0 人回复 | 2023-09-12

我很少有这样声明的 C 函数
$ G% k6 R) ?) l" l
    CURLcode curl_wrapper_easy_setopt_long(CURL* curl,CURLoption option,long param);CURLcode curl_wrapper_easy_setopt_str(CURL* curl,CURLoption option,char* param);% C  T0 o+ E# K6 u  ]3 @8 ]
我想把这些公开成这样的 Go 函数
8 ^1 g0 x+ |  K/ q
    func (e *Easy)SetOption(option Option,param interface{})" c9 n, w! \- r( e8 u; w
因此,我需要能够在运行过程中进行检查参数类型。我该怎么办?这是个好主意吗(如果不是这种情况下的好做法)?0 p# t2 z5 u7 s$ y
                                                               
" m2 j# C( Z0 B( y; p# y    解决方案:                                                                : r. P2 }3 E0 T0 W
                                                                似乎 Go 有专门用于这种特殊形式的开关(称为类型 switch):
% y0 [7 X0 k3 Z- M[code]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)))   code]
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则