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. char/unsigned char/int/short 存储范围

    Type Storage size Value range char 1 byte -128 to 127 or 0 to 255 unsigned char 1 byte 0 to 255 sign ...

  2. IntelliJ IDEA使用心得

    前言:我原来一直使用的是Eclipse,但是发现有的教程上使用的是Intellij这个IDE,而且我发现Eclipse在Web编程上特别是页面上的自动补全上确实有些不足,而且Intellij这个软件的 ...

  3. Maven知识整理

    一.概念: Maven是一个项目管理工具,它包含了一个项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统( ...

  4. 事务 — Redis 设计与实现

    非事务状态下的命令以单个命令为单位执行,前一个命令和后一个命令的客户端不一定是同一个: 事务状态则是以一个事务为单位,执行事务队列中的所有命令:除非当前事务执行完毕,否则服务器不会中断事务,也不会执行 ...

  5. jmeter---将回应数据写入到文件

    jmeter---将回应数据写入到文件 JMeterPlugins (插件监听器)Flexible File Writer:这个插件允许你灵活记录测试结果 Filename:结果记录的地方 Overw ...

  6. Java锁的选择

    1.synchronized: 当只有少量竞争者.synchronized不会引发死锁 2.ReentrantLock:竞争者不少,但是趋势可以预估.使用不当,可能造成死锁.

  7. WINSCP传输文件自动赋予777权限

    WinSCP WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端.同时支持SCP协议.它的主要功能就是在本地与远程计算机间安全的复制文件. 为了复制到Linux的文件具有777 ...

  8. springboot整合shiro-登录认证和权限管理

    https://blog.csdn.net/ityouknow/article/details/73836159

  9. 【java】注释

    一.注释   1. 注释类型 [a]. 单行注释 // 单行注释 [b]. 多行注释 /* 多行注释 */ [c]. 文档注释 /** 文档注释 */ 一般情况下,需求,实现方式用多行注释,类和方法上 ...

  10. java线程池ThreadPoolExecutor类使用详解

    在<阿里巴巴java开发手册>中指出了线程资源必须通过线程池提供,不允许在应用中自行显示的创建线程,这样一方面是线程的创建更加规范,可以合理控制开辟线程的数量:另一方面线程的细节管理交给线 ...