English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В Go-языке интерфейс является集合ом метода подписи, это также тип, что означает, что вы можете создавать переменные типа интерфейса. В Go-языке вы можете создавать несколько интерфейсов в программе с помощью заданной грамматики:
type interface_name interface{ //метод签名 }
Примечание:В Go-языке не разрешается создавать методы с одинаковыми именами в двух или более интерфейсах. Если вы попробуете это сделать, ваш程序 будет аварийно завершен. Давайте рассмотрим несколько интерфейсов с помощью примера.
//多个接口的概念 package main import "fmt" // 接口 1 type AuthorDetails interface { details() } // 接口 2 type AuthorArticles interface { articles() } // 结构体 type author struct { a_name string branch string college string year int salary int particles int tarticles int } //实现接口方法1 func (a author) details() {} fmt.Printf("Автор: %s", a.a_name) fmt.Printf("\nОтдел: %s, через дату: %d", a.branch, a.year) fmt.Printf("\nНазвание школы: %s", a.college) fmt.Printf("\nЗарплата: %d", a.salary) fmt.Printf("\nКоличество опубликованных статей: %d", a.particles) } //Реализация метода интерфейса 2 func (a author) articles() { pendingarticles := a.tarticles - a.particles fmt.Printf("\nНеопубликованные статьи: %d", pendingarticles) } //Основное значение func main() { //Ассигнование структуры values := author{ a_name: "Mickey", branch: "Computer science", college: "XYZ", year: 2012, salary: 50000, particles: 209, tarticles: 309, } //Доступ к методам с использованием интерфейса 1 var i1 AuthorDetails = values i1.details() //Доступ к методам с использованием интерфейса 2 var i2 AuthorArticles = values i2.articles() }
Вывод:
Автор: Mickey Отдел: Computer science, через дату: 2012 Название школы: XYZ Зарплата: 50000 Количество опубликованных статей: 209 Неопубликованные статьи: 100
Объяснение использования:Как показано в примере выше, у нас есть два интерфейса с методами, namely details() и Articles(). В данном случае метод details() предоставляет основные подробные данные автора, а метод articles() предоставляет неопубликованные статьи автора.
Существует также структура под названием Автор (Author), которая содержит набор переменных, значения которых используются в интерфейсе. В основных методах мы назначаем значения существующих переменных в структуре автора, чтобы они использовались в интерфейсе и создаем переменные типа интерфейса для доступаAuthorDetailsиAuthorArticlesМетоды интерфейса.