當前位置: 首頁>>編程語言>>正文


Go語言教程:接口

返回Go語言教程首頁

概念簡介

接口(Interfaces)是命名了的方法簽名(signatures)的集合。

例程代碼


package main

import "fmt"
import "math"

// 這裏是一個幾何體的基本接口。
type geometry interface {
    area() float64
    perim() float64
}

// 在我們的例子中,我們將在類型 `rect` 和 `circle` 上實現
// 這個接口
type rect struct {
    width, height float64
}
type circle struct {
    radius float64
}

// 要在 Go 中實現一個接口,我們就需要實現接口中的所有
// 方法。這裏我們在 `rect` 上實現了 `geometry` 接口。
func (r rect) area() float64 {
    return r.width * r.height
}
func (r rect) perim() float64 {
    return 2*r.width + 2*r.height
}

// `circle` 的實現。
func (c circle) area() float64 {
    return math.Pi * c.radius * c.radius
}
func (c circle) perim() float64 {
    return 2 * math.Pi * c.radius
}

// 如果一個變量具有接口類型,那麽我們可以調用指定接口中的
// 方法。這裏有一個通用的 `measure` 函數,利用它來在任
// 何的 `geometry` 上工作。
func measure(g geometry) {
    fmt.Println(g)
    fmt.Println(g.area())
    fmt.Println(g.perim())
}

func main() {
    r := rect{width: 3, height: 4}
    c := circle{radius: 5}

    // 結構體類型 `circle` 和 `rect` 都實現了 `geometry`
    // 接口,所以我們可以使用它們的實例作為 `measure` 的參數。
    measure(r)
    measure(c)
}

執行&輸出


$ go run interfaces.go
{3 4}
12
14
{5}
78.53981633974483
31.41592653589793


要學習更多關於 Go 的接口的知識,看看這篇
很棒的博文

課程導航

學習上一篇:Go語言教程:方法    學習下一篇:Go語言教程:錯誤處理

相關資料

本例程github源代碼:https://github.com/xg-wang/gobyexample/tree/master/examples/interfaces

Go語言接口

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/4035.html,未經允許,請勿轉載。