回答

收藏

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

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

我很少有这样声明的 C 函数# {! H7 ~! a  q% a" o1 g6 ~* Y
    CURLcode curl_wrapper_easy_setopt_long(CURL* curl,CURLoption option,long param);CURLcode curl_wrapper_easy_setopt_str(CURL* curl,CURLoption option,char* param);
    - q- j: z% n* I9 Z; r! h- G  }' Z
我想把这些公开成这样的 Go 函数% r- @5 L, e( \4 T+ @: T
    func (e *Easy)SetOption(option Option,param interface{})
    + @2 S& o8 a) L! S5 m' O  F! `" N
因此,我需要能够在运行过程中进行检查参数类型。我该怎么办?这是个好主意吗(如果不是这种情况下的好做法)?, |0 a; y* ]8 h
                                                               
  B: \0 j7 Q8 m6 v    解决方案:                                                                6 C8 r8 B5 T, m9 C+ ^
                                                                似乎 Go 有专门用于这种特殊形式的开关(称为类型 switch):1 O  R* v! d# L$ S5 T
[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]
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则