Go語言——struct、type、func的綜合用法
阿新 • • 發佈:2019-01-25
最近在學golang語言,對於struct、type、func的學習進行了簡單的程式設計練習,程式碼如下
package main import ( "fmt" ) const ( WHITE = iota BLACK BLUE RED YELLOW ) //Color 宣告Color為byte的別名 type Color byte //Box type box type Box struct { len, wid, high float64 c Color } //BoxList box集合,不確定個數,使用動態陣列 type BoxList []Box //Volume 計算box的容量 func (b Box) Volume() float64 { return b.len*b.wid*b.high } //SetColor 將box的顏色設為特定值 func (b Box) SetColor(c Color) { b.c = c } //BiggestColor 找boxlist中容量最大的box的顏色 func (boxlist BoxList) BiggestColor() (c Color) { v := 0.0 c = WHITE //遍歷boxlist,求容量最大的 for _, b := range boxlist { if tmpv := b.Volume(); tmpv > v { v = tmpv c = b.c } } return } //SetBlack 將boxlist中的box顏色都設定為BLACK func (boxlist BoxList) SetBlack() { for i := range boxlist { boxlist[i].c = BLACK } } //PrintBox 列印box func (b Box) PrintBox() { fmt.Println(b.len, b.wid, b.high, b.Volume(), b.c.String()) } //String 將顏色以字串形式返回 func (c Color) String() string { strings := []string{"WHITE", "BLACK", "BLUE", "RED", "YELLOW"} return strings[c] } func main() { //建立一個boxlist,儲存若干box boxlist := BoxList{ Box{1,2,3,RED}, Box{1,4,2,WHITE}, Box{4,2,5,BLACK}, Box{2,4,3,BLUE}, } //列印所有的box for i := range boxlist { boxlist[i].PrintBox() } //輸出boxlist的大小 fmt.Println("len of boxlist = ", len(boxlist)) //輸出第二個box的顏色 fmt.Println("color of boxlist[1] = ", boxlist[1].c.String()) //輸出boxlist中容量最大的box的顏色 fmt.Println("biggest color = ", boxlist.BiggestColor()) //將boxlist中的所有box顏色都設定為黑色 boxlist.SetBlack() fmt.Println("將所有box顏色設定為黑色") for i := range boxlist { boxlist[i].PrintBox() } }