2014-12-13 12 views
18

ve yapı elemanlarını yazdırmak için beklenen bir işlev değil, bu basit bir program yazdım: Ben çalıştırdığınızdaHata: struct Tip <code>struct</code> kullanarak bir ifade

package main 

import "fmt" 

type Salutation struct { 
    name  string 
    greeting string 
} 

func Greet(salutation Salutation) { 
    fmt.Println(salutation.name) 
    fmt.Println(salutation.greeting) 
} 

func main() { 
    var s = Salutation 
    s.name = "Alex" 
    s.greeting = "Hi" 
    Greet(s) 
} 

hatası go:16: type Salutation is not an expression olsun. Burada neyin yanlış gidiyor?

s tanımını var s = Salutation {"Alex", "Hi"} olarak değiştirdiğimde, sorun değil. Fakat aynı varlığı tanımlamak için temel olarak farklı sözdizimsel yöntemler. Bu yüzden hatanın kaynağını anlamıyorum.

cevap

31

hata bu hat

var s = Salutation 

bir değere değerlendirmek gerekir = sağındaki şey açık. Salutation, tür değil, değerdir. Aşağıda belirtilen üç beyanın sonucu aynıdır. Üçüncü varyasyon genellikle ikinciye tercih edilir, ancak paket düzeyinde bir değişken bildirmek için kullanılamaz.

Dil özelliklerine bakın for all of the details on variable declarations.

+0

"tip salution struct {}' fmt.Println (salution, "struct typee") yapısını kaydetme olanağı vardır.} @Cerise Limon – muthukumar

İlgili konular