中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Golang中--面向對象封裝

發布時間:2020-08-10 08:02:35 來源:網絡 閱讀:888 作者:GoDevops 欄目:編程語言

    學習過Python或者java的朋友,都會習慣里面的類,而Golang中是沒有類的概念,而有類似的概念結構體,結構體是一款功能強大的數據類型,能夠簡單的實現其他語言中類實現的功能,能夠序列化json,支持繼承,在繼承時,繼承父結構體的屬性和父結構體的方法。同時結構體也像其他數據結構和函數一樣,以大寫字母開頭的結構體能夠導出本包,應用到其他包。而當開始定義的一些小寫字母定義的結構體,我們想要用于其他包的時候,可以用工廠函數的方式實現。此外可以使用工廠函數結合定義某些方法實現面向對象的封裝特性。

封裝的介紹:

    封裝(encapsulation)就是把抽象出的字段和對字段的操作封裝在一起,數據被保護在內部,程序的其 它包只有通過被授權的操作(方法),才能對字段進行操作。

封裝的理解和好處:

1) 隱藏實現細節

2)  可以對數據進行驗證,保證安全合理(某些字段)

如何體現封裝
1) 對結構體中的屬性進行封裝

2) 通過方法,包 實現封裝

封裝的實現步驟


1) 將結構體、字段(屬性)的首字母小寫(不能導出了,其它包不能使用,類似 private) 

2) 給結構體所在包 供一個工廠模式的函數,首字母大寫。類似一個構造函數
3) 供一個首字母大寫的 Set 方法(類似其它語言的 public),用于對屬性判斷并賦值

func (var 結構體類型名) SetXxx(參數列表) (返回值列表) {

//加入數據驗證的業務邏輯

var.字段 = 參數}

4) 供一個首字母大寫的 Get 方法(類似其它語言的 public),用于獲取屬性的值func (var 結構體類型名) GetXxx() {

return var.age; }

特別說明:在 Golang 開發中并沒有特別強調封裝,這點并不像 Java. 所以 醒學過 java 的朋友, 不用總是用 java 的語法特性來看待 Golang, Golang 本身對面向對象的特性做了簡化的.

相關示例

Golang中--面向對象封裝

package person

import "fmt"
//定義不能導出的結構體
type person struct {
   Name string
   age  int
   sal float64
}
//定義工廠模式的函數 首字母大寫 類似構造函數
func  NewPerson(name string) *person{
   return &person{
      Name:name,
   }
}
//提供一個Set方法 設置年齡
func (user *person) Setage(age int) {
   if age >0  && age < 150 {
      user.age = age
   }else {
      fmt.Println("年齡數值不對!")
   }
}
//獲取年齡
func (user *person) Getage() int{
   return  user.age
}
//更改年齡
func (user *person) Updateage(age int) int{
    user.age =age
   return  user.age
}
//更改姓名
func  (user *person) Updatename(name string) string{
   user.Name=name
   return  user.Name
}

在另一個包中調用person

main

(
   )

() {
   person.()
   fmt.()
   .()
   fmt.()
   .()
   fmt.()
   .()
   fmt.()
   fmt.()
   .()
   fmt.()



}


結果

Golang中--面向對象封裝


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

会东县| 谢通门县| 拉萨市| 淄博市| 宜君县| 班戈县| 大方县| 云龙县| 杭州市| 天峻县| 昭平县| 辽宁省| 宁明县| 岳普湖县| 武陟县| 精河县| 富裕县| 汕尾市| 台南县| 南乐县| 修文县| 聂拉木县| 丽水市| 虞城县| 胶州市| 丰县| 农安县| 奈曼旗| 同仁县| 小金县| 靖远县| 科技| 郴州市| 诏安县| 保亭| 麟游县| 都昌县| 扎兰屯市| 温宿县| 宁化县| 新闻|