Re: Структуры и методы

54 views
Skip to first unread message
Message has been deleted

Дмитрий Михайлов

unread,
Feb 23, 2015, 4:03:20 AM2/23/15
to gola...@googlegroups.com
По моему это из-за того что не была инициализирована переменная Person, т.е. она пустая. Полю Model было присвоено значение, а другому нет. Возможно поможет если добавить mobile.Person = alex



понедельник, 23 февраля 2015 г., 14:26:49 UTC+7 пользователь forwo...@gmail.com написал:
Объясните пожалуйста, почему во втором случае (с телефоном), не выводится его название.

package main

import (
 
"fmt"
)

type
Person struct {
 
Name string
}

func
(p *Person) Talk() {
 fmt
.Println("Привет, моё имя", p.Name)
}

type
Android struct {
 
Person
 
Model string
}

func main
() {
 alex
:= Person{Name: "Dima"}
 alex
.Talk()

 mobile
:= new(Android)
 mobile
.Model = "Asus"
 mobile
.Talk()
}



Dmitry Vyukov

unread,
Feb 23, 2015, 4:05:40 AM2/23/15
to gola...@googlegroups.com
2015-02-23 10:26 GMT+03:00 <forwo...@gmail.com>:
> Объясните пожалуйста, почему во втором случае (с телефоном), не выводится
> его название.
>
> package main
>
> import (
> "fmt"
> )
>
> type Person struct {
> Name string
> }
>
> func (p *Person) Talk() {
> fmt.Println("Привет, моё имя", p.Name)
> }
>
> type Android struct {
> Person
> Model string
> }
>
> func main() {
> alex := Person{Name: "Dima"}
> alex.Talk()
>
> mobile := new(Android)
> mobile.Model = "Asus"
> mobile.Talk()
> }



Потому что никакой код не печатает название модели. Единственный код,
который что-то печатает, печатает имя персоны а не модель телефона. А
у mobile имя персоны пустое.

Вот так печатается и имя и модель
http://play.golang.org/p/QnmdvtI8dw
Reply all
Reply to author
Forward
0 new messages