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))
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM