golang 入门之struct继承,嵌套
package main import "fmt" type Jocongmin struct{
Name string
Home string
Want string
} func (j *Jocongmin) SayName() string{ //这里定义的方法是拓展方法,是对Jocongmin这个struct的继承,也就是struct多了一个Say..方法,可以通过Jocongmin这个struct实例来调用
return "我的名字是"+j.Name
} func (j *Jocongmin) SayHome() string{
return "我的家在"+j.Home
}
func (j *Jocongmin) SayWant() string{
return "我的喜爱是"+j.Want
} func main(){
var jocongmin Jocongmin
jocongmin.Name="周聪明"
jocongmin.Home="福建省"
jocongmin.Want="money"
fmt.Println(jocongmin.SayName()) //调用了struct的方法
fmt.Println(jocongmin.SayHome())
fmt.Println(jocongmin.SayWant())
}
2.struct的嵌套
package main import "encoding/json"
import "fmt"
import "strconv"
import (
"github.com/drone/routes"
"net/http"
) type ResInfo struct { //定义一个struct,然后这个struct里面有哪些子对象
Data YearDataStruct
Msg string
} type YearDataStruct struct {
MouthAll []MouthStruct //定义一个类型为数组的对象,然后这个数组的元素类型为某种struct
Sum DetailStruct
Average DetailStruct
Quarter []QuarterStruct
}
type DetailStruct struct {
One int
Two int
Three int
}
type QuarterStruct struct {
DetailStruct //可以嵌套复合其他类型的struct,这样就继承下了其他struct的子对象
QuarterNum int
} type MouthStruct struct {
Mouth int
PartmentItem []ItemArrStruct
}
type ItemArrStruct struct {
PartMent string
DetailStruct
} func cross(w http.ResponseWriter) {
w.Header().Set("Access-Control-Allow-Origin", "*") //允许访问所有域
w.Header().Add("Access-Control-Allow-Headers", "Content-Type") //header的类型
w.Header().Set("content-type", "application/json") //返回数据格式是json
}
func main() {
fmt.Println("正在启动WEB服务...")
var mux *routes.RouteMux = routes.New()
mux.Get("/test", DataSend)
//http.Handle("/", mux)
http.ListenAndServe(":8088", mux)
fmt.Println("服务已停止")
} func DataSend(w http.ResponseWriter, r *http.Request) {
var data YearDataStruct
for i := 1; i < 13; i++ {
var partMent []ItemArrStruct
for t := 1; t < 4; t++ {
partMent = append(partMent, ItemArrStruct{
PartMent: "" + strconv.Itoa(t) + "abc",
DetailStruct: DetailStruct{ //继承其他struct的子对象的赋值方法是这样的,one two 之类的和partment是同一等级
One: 45,
Two: 23,
Three: 3432,
},
})
}
data.MouthAll = append(data.MouthAll, MouthStruct{
Mouth: i,
PartmentItem: partMent,
})
}
for i := 1; i <= 4; i++ {
data.Quarter = append(data.Quarter, QuarterStruct{
DetailStruct: DetailStruct{
One: 4324,
Two: 23423,
Three: 4324234,
},
QuarterNum: i,
})
}
data.Sum = DetailStruct{
One: 4546,
Two: 454,
Three: 454,
}
data.Average = DetailStruct{
One: 4546,
Two: 454,
Three: 465465,
}
var res ResInfo
res.Data = data
res.Msg = "right"
resJson, _ := json.Marshal(res)
fmt.Fprintln(w, string(resJson))
}
golang 入门之struct继承,嵌套的更多相关文章
- Golang 入门 : 结构体(struct)
Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型.试图表示一个现实世界中的实体. 结构体由一系列命名的元素组成,这些元素又被称为字段,每个字段都有一个名称和 ...
- golang中结构体的嵌套、方法的继承、方法的重写
package main import "fmt" type human struct { name, phone string age int8 } type student s ...
- Java程序员的Golang入门指南(上)
Java程序员的Golang入门指南 1.序言 Golang作为一门出身名门望族的编程语言新星,像豆瓣的Redis平台Codis.类Evernote的云笔记leanote等. 1.1 为什么要学习 如 ...
- Java程序员的Golang入门指南(下)
Java程序员的Golang入门指南(下) 4.高级特性 上面介绍的只是Golang的基本语法和特性,尽管像控制语句的条件不用圆括号.函数多返回值.switch-case默认break.函数闭包.集合 ...
- Go基础系列:struct和嵌套struct
struct struct定义结构,结构由字段(field)组成,每个field都有所属数据类型,在一个struct中,每个字段名都必须唯一. 说白了就是拿来存储数据的,只不过可自定义化的程度很高,用 ...
- Golang面向对象编程-struct(结构体)
Golang面向对象编程-struct(结构体) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是面向对象编程 面向对象编程(Object Oriented Program ...
- Golang入门(3):一天学完GO的进阶语法
摘要 在上一篇文章中,我们聊了聊Golang中的一些基础的语法,如变量的定义.条件语句.循环语句等等.他们和其他语言很相似,我们只需要看一看它们之间的区别,就差不多可以掌握了,所以作者称它们为&quo ...
- Golang 入门 : 竞争条件
笔者在前文<Golang 入门 : 理解并发与并行>和<Golang 入门 : goroutine(协程)>中介绍了 Golang 对并发的原生支持以及 goroutine 的 ...
- Golang 入门 : goroutine(协程)
在操作系统中,执行体是个抽象的概念.与之对应的实体有进程.线程以及协程(coroutine).协程也叫轻量级的线程,与传统的进程和线程相比,协程的最大特点是 "轻"!可以轻松创建上 ...
随机推荐
- 22 初始模块 random time collections functools
一 .初始模块 1.从⼩到⼤的顺序: ⼀条代码 < 语句块 < 代码块(函数, 类) < 模块 2.引入模块的方式 ① import 模块 ② from 模块 im ...
- MySQL ERROR 2005 (HY000)
问题 使用 docker run -it --rm mysql mysql -h 192.168.18.133:3306 -uroot -p 连接远程mysql服务器时,ERROR 2005 (HY0 ...
- npx:npm包执行器
npx 作用: 单次执行命令而不需要安装到本机 执行依赖包里的二进制文件 使用不同版本的 node 利用 npx 可以下载模块这个特点,可以指定某个版本的 Node 运行脚本.它的窍门就是使用 npm ...
- :nth-of-type(n) 与 :nth-child(n) 区别
:nth-of-type(n):选择器匹配同类型中的第n个同级兄弟元素. :nth-child(n):选择器匹配父元素中的第n个子元素.
- [c/c++]fopen用法及参数介绍
函数定义: FILE * fopen ( const char * filename, const char * mode ); 参数mode: "r" read: 为输入操作打开 ...
- MongoDB从3.0.6升级到MongoDB3.4.9
最初进入公司的时候,有些爬虫数据需要存储在mongo数据库里面,当时看到最新的数据库版本是3.0.6,现在公司开展了新的项目需要使用到Mongo,使用到了Mongo的一些表关联查询的方法,但是只有在最 ...
- php结合phantomjs实现网页截屏、抓取js渲染的页面
首先PhantomJS快速入门 PhantomJS是一个基于 WebKit 的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, ...
- DOM confirm setTimeout url刷新
console.log 输出框 alert 弹出框 confirm 确认框 // URL和刷新 location.href 获取URL location.href = "url" ...
- 关于libusb-win32开发的经验
引用:http://blog.sina.com.cn/s/blog_4b4b54da010153zb.html 作为设备开发者, 一般需要让设备与上位机PC通讯, 我们往往考虑采用以下几种接口: rs ...
- ThinkPHP 3.1.2 视图 MVC-V -5
一.模板的使用 (重点) a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和模块名同名的文件夹[Index]/和方法名同名的文件[index].html(.tpl) ...