日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

七、Go 语言面向对象编程

發布時間:2024/10/8 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 七、Go 语言面向对象编程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

@Author:Runsen

在 Go 語言中沒有類(Class)的概念,但這并不意味著 Go 語言不支持面向對象編程,畢竟面向對象只是一種編程思想。對于面向對象編程的支持Go 語言設計得非常簡潔而優雅。

下面,我們主要介紹下Go面向對象編程的三大特性:封裝、繼承和多態。

  • 封裝:隱藏對象的屬性和實現細節,僅對外提供公共訪問方式
  • 繼承:使得子類具有父類的屬性和方法或者重新定義、追加屬性和方法等
  • 多態:不同對象中同種行為的不同實現方式

封裝

下面代碼中我們已經定義了一個矩形 Rectangle,定義一個方法 Area() 來計算它的面積,最后就可以調用 Area() 方法,計算面積。

package mainimport ("fmt" )// 矩形結構體 type Rectangle struct {Length intWidth int }// 計算矩形面積 func (r *Rectangle) Area() int {return r.Length * r.Width }func main() {r := Rectangle{4, 2}// 調用 Area() 方法,計算面積fmt.Println(r.Area()) }

在 Go 語言中沒有 Java中的public、private、protected 這樣的訪問控制修飾符,它是通過字母大小寫來控制可見性的。這個我在之前說過。

繼承

GO語言的繼承方式采用的是匿名組合的方式:Woman 結構體中包含匿名字段Person,那么Person中的屬性也就屬于Woman對象。

package mainimport "fmt"type Person struct {name string }type Man struct {Personsex string }func main() {man := Man{Person{"Runsen"}, "男"}fmt.Println(man.name) // Runsenfmt.Println(man.sex) // 男 }

多態

在面向對象中,多態的特征為:不同對象中同種行為的不同實現方式。在 Go 語言中可以使用接口實現這一特征。接口的概念和Java中的接口一模一樣,只不過定義不同,Go使用type 定義接口,Java使用interface 定義接口。

package mainimport ("fmt" )// 正方形 type Square struct {side float32 }// 長方形 type Rectangle struct {length, width float32 }// 接口 Shaper type Shaper interface {Area() float32 }// 計算正方形的面積 func (sq *Square) Area() float32 {return sq.side * sq.side }// 計算長方形的面積 func (r *Rectangle) Area() float32 {return r.length * r.width }func main() {r := &Rectangle{10, 2}q := &Square{10}// 創建一個 Shaper 類型的數組shapes := []Shaper{r, q}// 迭代數組上的每一個元素并調用 Area() 方法for n, _ := range shapes {fmt.Println("圖形數據: ", shapes[n])fmt.Println("它的面積是: ", shapes[n].Area())} }/* 圖形數據: &{10 2} 它的面積是: 20 圖形數據: &{10} 它的面積是: 100 */

由以上代碼輸出結果可知:不同對象調用 Area() 方法產生了不同的結果,展現了多態的特征。

參考資料

  • 官方教程: https://gobyexample.com/
  • 《Go 入門指南》: https://github.com/unknwon/the-way-to-go_ZH_CN

總結

以上是生活随笔為你收集整理的七、Go 语言面向对象编程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。