English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golang 基礎チュートリアル

Golang 控制文

Golang ファンクション & メソッド

Golang 構造体

Golang スライス & 配列

Golang 文字列(String)

Golang ポインタ

Golang インターフェース

Golang 并行

Golang 異常(Error)

Golang その他の雑多

Go 言語の複数のインターフェース

Go言語では、インターフェースはメソッドのシグネチャのコレクションであり、同時に一種のタイプでもあります。これは、インターフェースタイプの変数を作成できることを意味します。Go言語では、以下の構文を使ってプログラム内で複数のインターフェースを作成できます:

type interface_name interface{
//メソッドのシグネチャ
}

注意:Go言語では、2つ以上のインターフェースで同じ名前のメソッドを作成することは許可されていません。そうすることで試みると、あなたのプログラムはクラッシュします。複数のインターフェースについての例を通じて説明しましょう。

//複数のインターフェースの概念
package main
import "fmt"
// インターフェース 1
type AuthorDetails interface {
    details()
}
// インターフェース 2
type AuthorArticles interface {
    articles()
}
// 構造体
type author struct {
    a_name
    branch
    college
    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)
}
// Main value
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

用法解释:如上例所示,我们有两个带有方法的接口,即details()和Articles()。在这里,details()方法提供了作者的基本详细信息,而articles()方法提供了作者的待定文章。

还有一个名为作者(Author)的结构,其中包含一些变量集,其值在接口中使用。在主要方法中,我们在作者结构中分配存在的变量的值,以便它们将在接口中使用并创建接口类型变量以访问AuthorDetailsAuthorArticlesインターフェースのメソッド。