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

  • audivila

    audivila

    5 HAZİRAN 2009
  • GFX Tutorials

    GFX Tutorial

    12 AĞUSTOS 2013
  • GoProTutorials

    GoProTutoria

    18 NİSAN 2011