Go 之基础速学 (九) golang 里的结构体继承和数组初步学习
首先需要声明,在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文件里面的注释信息
下面我们来看一下数组的基本使用:
//数组的学习 案例一
//len() cap() 都是获取数组的长度
//var arr []string = []string{"a","b","c"}
//fmt.Println(arr,len(arr),cap(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)
//数组的学习 案例四
//规定数组的长度是5 但是设置了3个 剩下的会用默认值来填充 1 2 3 0 0
//var arr [5]int = [5]int{1,2,3}
//fmt.Println(arr)
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: