2016-06-13 17 views
7

Próbuję stworzyć strukturę, i to daje mi błąd, mówiąc mi, że pole jest nieznane.nieznane pole w literałach strukturalnych

Struct próbuję zainicjować jest:

package yelk 

type PhoneOptions struct { 
    phone string 
    cc string 
    lang string 
} 

I próbuję zainicjować PhoneOptions struct w cli.go tak:

number := os.Args[1] 
phoneOptions := yelk.PhoneOptions{phone: number} 

zrobić go run cli.go 5555555555 ale to daje mi błąd

./cli.go:29: unknown yelk.PhoneOptions field 'phone' in struct literal 

Wszystko The StackOverflow p osts, które widziałem z tym błędem, wydaje się być z zagnieżdżonych struktur. Zastanawiam się, co robię źle. cli.go poda ten błąd, jeśli po prostu spróbuję uruchomić na nim go build, więc nie sądzę, że jest to sygnał wejściowy, na którym go uruchomiłem.

Każdy pomysł, dlaczego tak się dzieje?

Odpowiedz

26

Pola, które zaczynają się od małych liter, są wewnętrzne i nie są odsłonięte, Jeśli chcesz odwołać się do pola z innego pakietu, musisz zacząć od litery pisanej dużymi literami, np.

package yelk 

type PhoneOptions struct { 
    Phone string 
    Cc string 
    Lang string 
} 

a następnie

number := os.Args[1] 
phoneOptions := yelk.PhoneOptions{Phone: number} 
+0

Naprawdę, nie wiem! Dzięki, spróbuję! –

+0

Świetnie! To działa! –

Powiązane problemy