1. ホーム
  2. types

[解決済み] interface{}の値の "実 "型を決定するには?

2022-05-24 07:57:23

質問

を使用するための良いリソースを見つけられませんでした。 interface{} の型を使用するための良い資料を見つけられませんでした。たとえば

package main

import "fmt"

func weirdFunc(i int) interface{} {
    if i == 0 {
        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)
}

Goの interface{} ?

具体的な質問

  • Type of Wのquot;real"はどのように取得するのですか?
  • 型の文字列表現を取得する方法はありますか?
  • 型の文字列表現を使用して、値を変換する方法はありますか? 値を変換する方法はありますか?

どのように解決するのですか?

あなたの例は動作します。以下はその簡略版です。

package main

import "fmt"

func weird(i int) interface{} {
    if i < 0 {
        return "negative"
    }
    return i
}

func main() {
    var i = 42
    if w, ok := weird(7).(int); ok {
        i += w
    }
    if w, ok := weird(-100).(int); ok {
        i += w
    }
    fmt.Println("i =", i)
}

Output:
i = 49

これは タイプアサーション .