golang入门之struct继承,嵌套

jake-前端工程师 jake-前端工程师     2022-09-21     484

关键词:

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.用来定义复杂数据结构2.struct里面可以包含多个字段(属性)3.struct类型可以定义方法,注意和函数的区分。4.struct类型是值类型5.struct类型可以嵌套6.Go语言没有class类型,只有struct类型packagemainimport"fmt"//声明结构体typeStudentstruct... 查看详情

golang入门到项目实战|golang继承(代码片段)

golang本质上没有oop的概念,也没有继承的概念,但是可以通过结构体嵌套实现这个特性。例如packagemainimport"fmt"typeAnimalstructnamestringageintfunc(aAnimal)eat()fmt.Println("eat...")func(aAnimal)sleep()fmt.Println("sleep")typeDogstr... 查看详情

golang中级进阶(二):结构体

...构体3.结构体标签tag4.嵌套结构体和json的序列化反序列化Golang中没有“类”的概念,Golang中的结构体和其他语言中的类有点相似。和其他面向对象语言中的类相比,Golang中的结构体具有更高的扩展性和灵活性。Golang中的基础数据... 查看详情

golang面向对象编程(代码片段)

阅读目录Golang面向对象编程11struct声明和定义struct初始化方法1struct初始化方法2结构体类型指针2struct的内存布局及构造函数结构体没有构造函数,必要时需要自己实现匿名字段和嵌套3匿名字段和struct嵌套匿名结构体匿名结构... 查看详情

golang如何体现面向对象三大特性之继承?(代码片段)

继承引出继承的必要性继承的基本介绍基本介绍示意图快速入门案例继承的好处继承的注意事项多重继承引出继承的必要性看一个问题,学生考试系统的程序,提出代码复用的问题。看下例代码:packagemainimport( "fmt... 查看详情

golang中结构体struct(代码片段)

前言这里总结的Golang笔记只适合有点编程基础的人看,比如Java往期内容:Golang学习【day1】变量、类型Golang学习,指针,循环控制相关循环结构控制、包函数的使用异常处理、数组老奶奶可以看懂的切片老奶奶可... 查看详情

golang中结构体struct(代码片段)

前言这里总结的Golang笔记只适合有点编程基础的人看,比如Java往期内容:Golang学习【day1】变量、类型Golang学习,指针,循环控制相关循环结构控制、包函数的使用异常处理、数组老奶奶可以看懂的切片老奶奶可... 查看详情

继承复习-go(代码片段)

...性,若要继承方法可以通过实现接口达成接口多态在golang中interface相当于类,struct相当于对象,当struct重写了interface的方法就是struct继承了interface类的方法,interface没有属性所以struct有属性没有方法, 查看详情

golang-struct

Golang-struct  Golang语言面向对象编程说明    1)Golang也支持面向对象编程(OOP),但是和传统的面向对象编程有区别,并不是纯粹的面向对象语言。所以我们说Golang支持面向对象编程特性是比较准确的。    2)Golang没有类(c... 查看详情

golang之结构体和方法(代码片段)

结构体的定义结构体是将零个或者多个任意类型的命令变量组合在一起的聚合数据类型。每个变量都叫做结构体的成员。其实简单理解,Go语言的结构体struct和其他语言的类class有相等的地位,但是GO语言放弃了包括继承在内的大... 查看详情

go继承(代码片段)

...有对象的拼装从而获得实现更为复杂的行为的方法。一个struct嵌套了另外一个匿名的struct从而实现了继承,嵌套多个匿名struct实现多重继承。一个struct嵌套了宁外一个struct的实例实现了组合。typeAnimalstruct//继承typeCatstruct//匿名*An... 查看详情

golang结构体嵌套和用结构体实现模拟“继承”(代码片段)

什么是结构体嵌套一个结构体中可以嵌套包含另一个结构体或结构体指针结构体嵌套packagemainimport"fmt"//桌子结构体typetablestruct materialstring shapeint comcommon//嵌套结构体//被嵌套的结构体定义typecommonstruct yearintfuncmain() //嵌套结... 查看详情

golang入门到项目实战golang方法

参考技术Ago语言没有面向对象的特性,也没有类对象的概念。但是,可以使用结构体来模拟这些特性,我们都知道面向对象里面有类方法等概念。我们也可以声明一些方法,属于某个结构体。Go中的方法,是一种特殊的函数,定... 查看详情

go语言入门篇-golang之文本编码处理

Golang之文本编码处理  查看详情

golang入门:结构体(struct)(代码片段)

...些数据。结构体的概念在C语言里很常见,被称为struct。Golang中的结构体也是struct。Go语言中没有类的概念,因此在Go中结构体有着更为重要的地位。结构体是复合类型(compositetypes),当需要定义一个类型,它由一系列属性组成,每... 查看详情

go中的"继承"之struct的匿名字段2(代码片段)

//code_016_struct_anonymous_field2projectmain.gopackagemainimport("fmt")typePersonstructnamestringsexbyteageinttypeStudentstructPersonidintaddrstringnamestring//同名字段typemystrstring//自定义类型typeStude 查看详情

继承复习-go(代码片段)

...性,若要继承方法可以通过实现接口达成接口多态在golang中interface相当于类,struct相当于对象,当struct重写了interface的方法就是struct继承了interface类的方法,interface没有属性所以struct有属性没有方法,通过struc... 查看详情

golang入门案例之socket

//服务端代码packagemainimport( "fmt" "net" "log" "os" "encoding/binary")funcmain(){ //建立socket,监听端口 netListen,err:=net.Listen("tcp","localhost:8090") CheckError(err) defernetListen.Close() Log("Waitingforc 查看详情