02.6
This commit is contained in:
@@ -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) //Да, здесь можно разбить строку на две.
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user