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