Go中的"類"之struct的初體驗
摘要:
// code_015_struct_firstTime project main.go
package main
import (
"fmt"
)
type Student struct {
idint
name string
sex...
// code_015_struct_firstTime project main.go package main import ( "fmt" ) type Student struct { idint name string sexbyte ageint addr string } func main() { /* 重要的事情說三遍:Go語言中沒有封裝、繼承、多型等概念,但同樣通過別的方式實現這些特性. 封裝:通過方法實現;繼承:通過匿名欄位實現;多型:通過介面實現 */ //1)順序初始化。 var s1 Student = Student{1, "ck_god", 0, 27, "sz"} s2 := Student{2, "god_girl", 1, 23, "sz"} //s3 := Student{3, "stranger", "m", 20, "sz"} //報錯, 性別為byte型別的資料,只有0或者1 //s4 := Student{3, "stranger0", 1, 20} //報錯,非指定初始化,必須每個成員都初始化 //fmt.Printf(s1, s2) //報錯,非字串型別不可列印 fmt.Printf("%T,%T", s1, s2) fmt.Println("") fmt.Printf("%v,%v", s1, s2) //2) 指定成員初始化 fmt.Println("") s5 := Student{id: 2, name: "laowang"} //未初始化的成員為零值 //s5.id,如果Student.id則報錯---》沒有id這個method 3)訪問結構體的成員變數 fmt.Printf("id=%d,name=%s,sex=%c,age=%d,addr=%s", s5.id, s5.name, s5.sex, s5.age, s5.addr) //4) struct的指標變數 fmt.Println("") var s8 *Student = &Student{8, "wck", 1, 20, "sz"} s9 := &Student{9, "god_god", 0, 21, "sz"} fmt.Printf("%v,%v", s8, s9) }
輸入結果如下:
main.Student,main.Student {1 ck_god 0 27 sz},{2 god_girl 1 23 sz} id=2,name=laowang,sex=,age=0,addr= &{8 wck 1 20 sz},&{9 god_god 0 21 sz}