This commit is contained in:
Slava Zgordan
2015-08-31 12:46:39 +02:00
parent 42bc3554d4
commit 7bab98ab98

View File

@@ -83,13 +83,13 @@
SpendSalary(amount float32)
}
Интерфейс может быть реализован любым типом данных, и один тип может реализоваывать несколько интерфейсов одновременно.
Интерфейс может быть реализован любым типом данных, и один тип может реализовывать несколько интерфейсов одновременно.
Заметьте, что все типы реализуют пустой интерфейс `interface{}`, так как у него нет методов, а все типы изначально также не имеют методов.
### Значение интерфейса
Итак, какие типы значений может принимать интерфейс? Если мы опрделеили переменную типа interface, то значение любого типа, который реализует этот интерфейс, может быть присвоено этой переменной.
Итак, какие типы значений может принимать интерфейс? Если мы определили переменную типа interface, то значение любого типа, который реализует этот интерфейс, может быть присвоено этой переменной.
Как в примере выше, если мы определили переменную "m" как интерфейс Men, то все значения типа Student, Human или Employee могут быть присвоены переменной "m". Так что у нас может быть срез элементов типа Men, и значение любого типа, реализующего интерфейс Men, может присвоено элементам этого среза. Но имейте в виду, что срез элементов типа interface не ведет себя так же, как срез из элементов других типов.
@@ -124,7 +124,7 @@
}
func (e Employee) SayHi() {
fmt.Printf("Привет, я - %s, я работаю в %s. Звонгите мне по номеру %s\n", e.name,
fmt.Printf("Привет, я - %s, я работаю в %s. Звоните мне по номеру %s\n", e.name,
e.company, e.phone) //Да, здесь можно разбить строку на две.
}