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

  • Dave Wallace

    Dave Wallace

    27 Kasım 2007
  • glowpinkstah

    glowpinkstah

    16 Mayıs 2006
  • RogerBuckChrist

    RogerBuckChr

    9 Temmuz 2011