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

  • Christian Atlas

    Christian At

    26 Mart 2009
  • itfigueres

    itfigueres

    12 EKİM 2013
  • Manuel Vizcaino

    Manuel Vizca

    27 Mayıs 2008