*Neden bir Arayüz için' *bir Yapı biçerim t? | Netgez.com
SORU
22 Kasım 2012, PERŞEMBE


*Neden bir Arayüz için' *bir Yapı biçerim t?

Sadece Go tour ile çalışıyorum ve işaretçileri ve ARAYÜZLERİ hakkında kafam karıştı. Neden bu kod derleme gitmiyor?

package main

type Interface interface {}

type Struct struct {}

func main() {
    var ps *Struct
    var pi *Interface
    pi = ps

    _, _ = pi, ps
}

Struct yani Interface neden *Struct olmaz *Interface?

Aldığım hata mesajı:

prog.go:10: cannot use ps (type *Struct) as type *Interface in assignment:
        *Interface is pointer to interface, not interface

CEVAP
22 Kasım 2012, PERŞEMBE


Bir yapı arabirim uygulama varsa, bu yapı için bir işaretçi otomatik olarak arayüzü de uygular. Bu yüzden asla sahip *SomeInterface prototip fonksiyonları, bu olmaz bir şey eklemek için SomeInterface, ve sana ihtiyacım yok böyle bir tipi değişken tanımlaması (bkz: this related question).

Bir arabirim değeri yok değeri beton yapı olarak bir değişken boyutu, bu olmaz Olası), ama bir tür işaretçi (daha kesin bir işaretçi yapı ve bir işaretçi türü). Russ Cox tam olarak here açıklar :

Arayüz değerleri iki kelimelik bir çifti veren bir işaretçi olarak temsil edilir bu tip arabirim saklanan hakkında bilgi için bir işaretçi ilişkili veri.

enter image description here

Bu Interface *Interface yapı Interface uygulama için bir işaretçi tutmak için doğru türde olmasıdır.

Sadece kullanmanız gerekir

var pi Interface

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • ★ByScrapi★ Designs

    ★ByScrapiâ

    27 AÄžUSTOS 2013
  • BenjiManTV

    BenjiManTV

    20 Mart 2011
  • Eric Anthony

    Eric Anthony

    13 AÄžUSTOS 2011