SORU
16 HAZİRAN 2011, PERŞEMBE


Bir arabirim belirlemek için nasıl{} değer's "gerçek" türü?

interface{} tip kullanmak için iyi bir kaynak bulamadım. Örneğin

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)
}

Git interface{} kullanarak iyi bir başlangıç yaptığını biliyor musunuz?

özel sorular:

  • nasıl "" Tip w? gerçek alabilirim
  • bir tür dize gösterimini almak için herhangi bir yolu var mı?
  • orada bir tür dize gösterimini kullanmak için herhangi bir yolu var mı bir değeri dönüştürmek?

CEVAP
16 HAZİRAN 2011, PERŞEMBE


Senin örnek bir iş yapıyor. İşte basitleştirilmiş bir versiyonu.

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

Type assertions kullanır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Justin Schenck

    Justin Schen

    24 Kasım 2006
  • Mark Brown

    Mark Brown

    9 HAZİRAN 2010
  • Techmoan

    Techmoan

    31 Mayıs 2009