Golang: cast an interface to a typed variable dynamically

前端 未结 1 824
攒了一身酷
攒了一身酷 2020-12-31 02:14

In go, is it possible to cast variables dynamically somehow?

For example, if a simple cast would be:

var intAge  = interfaceAge.(int)
相关标签:
1条回答
  • 2020-12-31 03:12

    No you can't. Go is a static typed language. The type of a variable is determined at compile time.

    If you want to determine dynamically the typeof an interface{} you could use type switching:

    var t interface{}
    t = functionOfSomeType()
    switch t := t.(type) {
    default:
        fmt.Printf("unexpected type %T", t)       // %T prints whatever type t has
    case bool:
        fmt.Printf("boolean %t\n", t)             // t has type bool
    case int:
        fmt.Printf("integer %d\n", t)             // t has type int
    case *bool:
        fmt.Printf("pointer to boolean %t\n", *t) // t has type *bool
    case *int:
        fmt.Printf("pointer to integer %d\n", *t) // t has type *int
    }
    
    0 讨论(0)
提交回复
热议问题