iT邦幫忙

2023 iThome 鐵人賽

DAY 1
0
自我挑戰組

Go語言自學挑戰系列 第 17

第十七天:介面interface

  • 分享至 

  • xImage
  •  

探討介面interface

interface中文翻譯叫介面、中國稱呼為接口

它是一組 method signatures、也就是一組方法,

裡面定義了還沒有被實作的方法,直接看實例比較清楚~

宣告方式如下:

type 介面名稱 interface {
    方法1 
    方法2
    ...
}
  1. 建立一個幾何的介面,裡面有一個計算面積的方法。
type geometry interface {
    area() float64
}
  1. 使用struct建立一個circle物件 。
type circle struct {
    radius float64
}
  1. 讓circle物件實作geometry interface的方法area() float64
func (c circle) area() float64 {
    return math.Pi * c.radius * c.radius
}
  1. 建立一個通用的函式measure接收任何
func measure(g geometry) {
    fmt.Println(g)
    fmt.Println(g.area())
}
  1. 最後在main函式定義一個circle物件,並將它傳入通用函式measure之中,完成程式如下:
    可在The Go Playground玩玩看 https://go.dev/play/p/XQLeTdpdlCJ
package main

import (
	"fmt"
	"math"
)

type geometry interface {
	area() float64
}

type circle struct {
	radius float64
}

func (c circle) area() float64 {
	return math.Pi * c.radius * c.radius
}

func measure(g geometry) {
	fmt.Println(g)
	fmt.Println(g.area())
}

func main() {
	c := circle{radius: 5}
	measure(c)
}

輸出結果如下:

{5}
78.53981633974483

結語

對於interface 我並沒有實戰的經驗,
/images/emoticon/emoticon02.gif

學習的過程中對這的概念真的很抽象,

不過據我的理解,結構變數的集合、介面式方法的集合

假設有一個名為人的物件

結構:將人的姓名、性別、身高......等變數整合再一起,

介面:將人的行為(走路、說話、吃飯......)方法整合再一起,

如果沒有整合也是可以使用,

但透過上述方法就能有效管理程式架構,

不然哪天在使用程式中尋找走路的方法就要搜尋半天XDD

以上是我的學習心得~

/images/emoticon/emoticon07.gif

如有錯誤敬請指教~~

參考資料

  1. https://willh.gitbook.io/build-web-application-with-golang-zhtw/02.0/02.6
  2. https://gobyexample.com/interfaces
  3. https://www.digitalocean.com/community/tutorials/how-to-use-interfaces-in-go

上一篇
第十六天: 標準函式庫(Standard library)
下一篇
第十八天:泛型Generics
系列文
Go語言自學挑戰29
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言