Go 之基礎速學 (九) golang 裡的結構體繼承和陣列初步學習

huxiaobai_001發表於2020-05-07

首先需要宣告,在golang裡面是不存在繼承這麼一說的,不像在php和java當中那樣有父類子類,子類繼承父類,extends,implements等等統統是不存在滴!
今天就模擬實現子類繼承父類的案例

看程式碼吧:

//NewsModel.go 理解為父類 結構體:
package models
import "github.com/pquerna/ffjson/ffjson"
type NewsModel struct {
   NewsId int
  NewsTitle string
}
func (news NewsModel) ToJson() string {
   result,err := ffjson.Marshal(news)
   if err!= nil {
      return err.Error()
   } else {
      return string(result)
   }
}
//SportsNews.go 理解為子類 子結構體:
package submodels

import (
   "com.huxiaobai/models"
  "github.com/pquerna/ffjson/ffjson")

type SportsNews struct {
   Tags []string //array 字串陣列
  // 我們在這裡定義的只是一個匿名屬性 型別為NewsModel 這樣我們就可以在別的地方呼叫NewsMoel結構體裡面的屬性就跟呼叫SportNews結構體裡面的屬性一樣來呼叫
  // 比如
  // var sn submodels.SportsNews
 // sn.NewsId = 123 // 這裡的sn.NewId就可以直接呼叫到NewsModel結構體裡面的屬性來進行操作
  // 如果 News Models.NewsModel 這麼來定義  那麼就得需要 sn.News.NewsId = 123 顯然這樣就有點不像php或者java裡面從子類當中可以直接讀取父類裡面屬性的特點了
  models.NewsModel
}

//這裡可以理解為覆蓋了母類當中的ToJson()方法
//當再呼叫fmt.Println(sn.ToJson())的時候那麼Tags以及母類當中的NewsId NewsTitle就會都被列印出來了
//如果不寫這個方法 呼叫的是母類裡面的ToJson() 列印的只是NewsId NewsTitle屬性的值
func (sn SportsNews) ToJson() string {
   result,err := ffjson.Marshal(sn)
   if err!= nil {
      return err.Error()
   } else {
      return string(result)
   }
}
//main.go 理解為入口檔案:
package main

import (
   "com.huxiaobai/submodels"
   "fmt" 
   "github.com/pquerna/ffjson/ffjson")

func main(){
  //通過struct結構體 模擬 php或者java當中的繼承 (重點去看SportsNews結構體當中屬性的定義:models.NewsModel) 案例一
  var sn submodels.SportsNews
  //可以就跟php當中子類調取父類當中元素的形式直接讀取NewsModel結構體裡面的屬性或者設定屬性值
  sn.NewsId = 123123
  sn.NewsTitle = "標題"
  sn.Tags = []string{"足球","羽毛球","排球"}
  fmt.Println(sn.ToJson())
}

重點看裡面的註釋,尤其是SportsNews.go檔案裡面的註釋資訊

下面我們來看一下陣列的基本使用:

//陣列的學習 案例一
//var arr []string  = []string{"a","b","c"}
//fmt.Println(arr,len(arr))

//陣列的學習 案例二
//var arr [3]string
//arr[0] = "a"
//arr[2] = "c"
//fmt.Println(arr)

//陣列的學習 案例三
//var arr [3]string = [3]string{0:"a",1:"b"}
//fmt.Println(arr)
本作品採用《CC 協議》,轉載必須註明作者和本文連結

胡軍

相關文章