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

  • Google

    Google

    18 EYLÜL 2005
  • Moodle

    Moodle

    11 Mayıs 2010
  • The Scary Snowman

    The Scary Sn

    1 ŞUBAT 2011