這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
package mainimport "fmt"type Jocongmin struct{Name stringHome stringWant 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 Jocongminjocongmin.Name="周聰明"jocongmin.Home="福建省"jocongmin.Want="money"fmt.Println(jocongmin.SayName()) //調用了struct的方法fmt.Println(jocongmin.SayHome())fmt.Println(jocongmin.SayWant())}
2.struct的嵌套
package mainimport "encoding/json"import "fmt"import "strconv"import ("github.com/drone/routes""net/http")type ResInfo struct { //定義一個struct,然後這個struct裡面有哪些子物件Data YearDataStructMsg string}type YearDataStruct struct {MouthAll []MouthStruct //定義一個類型為數組的對象,然後這個數組的元素類型為某種structSum DetailStructAverage DetailStructQuarter []QuarterStruct}type DetailStruct struct {One intTwo intThree int}type QuarterStruct struct {DetailStruct //可以嵌套複合其他類型的struct,這樣就繼承下了其他struct的子物件QuarterNum int}type MouthStruct struct {Mouth intPartmentItem []ItemArrStruct}type ItemArrStruct struct {PartMent stringDetailStruct}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 YearDataStructfor i := 1; i < 13; i++ {var partMent []ItemArrStructfor 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 ResInfores.Data = datares.Msg = "right"resJson, _ := json.Marshal(res)fmt.Fprintln(w, string(resJson))}