回答

收藏

如何确定接口值的“real”类型?{}

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

我还没有找到使用interface{}资源类型好。- x3 W! p' f  b5 ]/ i: k: N
    package mainimport "fmt"func weirdFunc(i int) interface{}{     if i ==        return "zero"   }    return i}func main()      var i = 5    var w = weirdFunc(5)    / this example works!    if tmp,ok := w.(int); ok              i  = tmp   }    fmt.Println("i =",i)}7 D8 M6 K( r; S% U3 C- ?: K
你知道如何使用 Go 介绍得很好interface{}吗?
3 t5 h2 s2 P: a+ B: |具体问题:
( W5 m+ U; t$ Z7 `8 N# w( B% y如何获得 w 真实类型?
5 ]) _5 A' P9 k' R2 ^1 C/ R  e有没有办法获得字符串的类型?
4 S5 H6 k+ f3 S  T有没有办法用类型的字符串来表示转换值?
                                                               
) ?4 Q; `4 ^, ~    解决方案:                                                                  [- e2 {9 t2 d3 o4 @2 a4 t* ^
                                                                也可以做类型切换:* o  U# G/ r7 ?. E
    switch v := myInterface.(type) {case int:    // v is an int here,so e.g. v   1 is possible.    fmt.Printf("Integer: %v",v)case float64:    // v is a float64 here,so e.g. v   1.0 is possible.    fmt.Printf("Float64: %v",v)case string:    // v is a string here,so e.g. v   " Yeah!" is possible.    fmt.Printf("String: %v",v)default:    // And here I'm feeling dumb. )   fmt.Printf("I don't know,ask stackoverflow.")}
    ; y% g7 _. _, C
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则