回答

收藏

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

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

我很少有这样声明的 C 函数
6 g7 ]8 g. e; O# n- k0 ]& q$ L/ J) Z# _
    CURLcode curl_wrapper_easy_setopt_long(CURL* curl,CURLoption option,long param);CURLcode curl_wrapper_easy_setopt_str(CURL* curl,CURLoption option,char* param);& S3 @+ S: A3 `8 H+ t( N
我想把这些公开成这样的 Go 函数9 P% p: {( N7 ~* _% X$ W8 d( y
    func (e *Easy)SetOption(option Option,param interface{})
    . b6 ~/ h- h. W4 `
因此,我需要能够在运行过程中进行检查参数类型。我该怎么办?这是个好主意吗(如果不是这种情况下的好做法)?
7 [9 f" S1 g7 g                                                                # g! v% A( g! Z# b+ k( Y0 ?
    解决方案:                                                               
; K/ @6 U5 w/ [, }% O. S                                                                似乎 Go 有专门用于这种特殊形式的开关(称为类型 switch):
! i4 H9 ]+ x/ x[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]
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则