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继承,嵌套的更多相关文章

  1. Golang 入门 : 结构体(struct)

    Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型.试图表示一个现实世界中的实体. 结构体由一系列命名的元素组成,这些元素又被称为字段,每个字段都有一个名称和 ...

  2. golang中结构体的嵌套、方法的继承、方法的重写

    package main import "fmt" type human struct { name, phone string age int8 } type student s ...

  3. Java程序员的Golang入门指南(上)

    Java程序员的Golang入门指南 1.序言 Golang作为一门出身名门望族的编程语言新星,像豆瓣的Redis平台Codis.类Evernote的云笔记leanote等. 1.1 为什么要学习 如 ...

  4. Java程序员的Golang入门指南(下)

    Java程序员的Golang入门指南(下) 4.高级特性 上面介绍的只是Golang的基本语法和特性,尽管像控制语句的条件不用圆括号.函数多返回值.switch-case默认break.函数闭包.集合 ...

  5. Go基础系列:struct和嵌套struct

    struct struct定义结构,结构由字段(field)组成,每个field都有所属数据类型,在一个struct中,每个字段名都必须唯一. 说白了就是拿来存储数据的,只不过可自定义化的程度很高,用 ...

  6. Golang面向对象编程-struct(结构体)

    Golang面向对象编程-struct(结构体) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是面向对象编程 面向对象编程(Object Oriented Program ...

  7. Golang入门(3):一天学完GO的进阶语法

    摘要 在上一篇文章中,我们聊了聊Golang中的一些基础的语法,如变量的定义.条件语句.循环语句等等.他们和其他语言很相似,我们只需要看一看它们之间的区别,就差不多可以掌握了,所以作者称它们为&quo ...

  8. Golang 入门 : 竞争条件

    笔者在前文<Golang 入门 : 理解并发与并行>和<Golang 入门 : goroutine(协程)>中介绍了 Golang 对并发的原生支持以及 goroutine 的 ...

  9. Golang 入门 : goroutine(协程)

    在操作系统中,执行体是个抽象的概念.与之对应的实体有进程.线程以及协程(coroutine).协程也叫轻量级的线程,与传统的进程和线程相比,协程的最大特点是 "轻"!可以轻松创建上 ...

随机推荐

  1. MySQL管理实务处理

    事物处理可以用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么全不执行. 事务:指一组sql语句 回退:指撤销指定的sql语句过程 提交:将未存储的sql语句结果写入数据库表 保留点 ...

  2. Dynamic Signals and Slots

    Ref https://doc.qt.io/archives/qq/qq16-dynamicqobject.html Trolltech | Documentation | Qt Quarterly ...

  3. NET设计模式 第二部分 结构性模式(14):结构型模式专题总结

    ——探索设计模式系列之十五 Terrylee,2006年5月 摘要:结构型模式,顾名思义讨论的是类和对象的结构,它采用继承机制来组合接口或实现(类结构型模式),或者通过组合一些对象,从而实现新的功能( ...

  4. mysql程序之mysqld_safe详解

    mysqld_safe命令 mysqld_safe是在Unix上启动mysqld服务器的推荐方法.mysqld_safe增加了一些安全特性,例如在发生错误时重新启动服务器,并将运行时信息记录到错误日志 ...

  5. Qt中多线程问题

    1. 出现的问题 编写视频解码器程序时,把解码那部分单独置于一个线程中进行处理,后来实际应用到项目中发现内存泄漏很严重 问题就出现在多线程中,每次视频解码器程序关闭时首先必须释放其所涉及的堆空间, 由 ...

  6. linux Centos 服务器之间NFS文件共享挂载

    linux Centos 6.9服务器之间文件共享挂载 目的:因为服务器设置了负载均衡,多服务器的文件上传必然要同步,这里的目的把服务器1设置为主文件服务器 服务器1:192.168.1.100(共享 ...

  7. 主流开源SQL(on Hadoop)总结

    转载至 大数据杂谈 (BigdataTina2016),同时参考学习 http://www.cnblogs.com/barrywxx/p/4257166.html 进行整理. 使用SQL 引擎一词是有 ...

  8. NPOI将DataGridView中的数据导出+导出Chart图表图片至Excel

    #region 导出Excel private HSSFWorkbook Workbook = null; private Sheet SheetOne = null; private DataFor ...

  9. 【转】[Android] NDK独立编译——独立工具链

    转载地址:https://blog.csdn.net/suningning/article/details/74510125

  10. mac下面 ,启动2个桌面版appium的方法

    分别打开2个终端,分别输入 appium 就可以分别起2个appium桌面版,然后设置端口 即可 参考: https://blog.csdn.net/qq_15283475/article/detai ...