久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      go語(yǔ)言中的結(jié)構(gòu)體與方法詳解

      go語(yǔ)言中的結(jié)構(gòu)體與方法詳解

      結(jié)構(gòu)體用來(lái)定義復(fù)雜的數(shù)據(jù)結(jié)構(gòu),存儲(chǔ)很多相同的字段屬性

      1、結(jié)構(gòu)體的定義以及簡(jiǎn)單實(shí)用

      package main  import (     "fmt" )  func main() {     type Student struct { //定義結(jié)構(gòu)體         name string         age  int     }     s1 := new(Student) // 定義指向結(jié)構(gòu)體的指針     s1.name = "xiaomu"     s1.age = 10     fmt.Printf("name:%snage:%dn", s1.name, s1.age) }

      結(jié)構(gòu)體定義的三種方式,例如上面的Student類型,有如下方式定義

      ①var s1 Student 在內(nèi)存中直接定義一個(gè)結(jié)構(gòu)體變量

      ②s1 := new(Student) 在內(nèi)存中定義一個(gè)指向結(jié)構(gòu)體的指針

      ③s1 := &Student{} 同上

      通過(guò)以下方式獲取存儲(chǔ)的值

      ①s1.name

      ②s1.name或者(*s1).name

      ③同上

      2、struct中的“構(gòu)造函數(shù)”,稱之為工廠模式,見(jiàn)代碼

      package main  import (     "fmt" )  type Student struct { //聲明結(jié)構(gòu)體     Name string     Age  int }  func NewStudent(name string, age int) *Student { // 返回值指向Student結(jié)構(gòu)體的指針     return &Student{         Name: name,         Age:  age,     } }  func main() {     s1 := NewStudent("xiaomu", 123) // 聲明并且賦值指向Student結(jié)構(gòu)體的指針     fmt.Printf("name: %snage: %d", s1.Name, s1.Age) }

      3、特意聲明注意事項(xiàng)?。?!

      結(jié)構(gòu)體是值類型,需要使用new分配內(nèi)存

      4、匿名字段,直接看下面代碼

      package main  import (     "fmt" )  func main() {     type Class struct {         ClassName string     }     type Student struct { //定義結(jié)構(gòu)體         name  string         age   int         Class // 定義匿名字段,繼承了該結(jié)構(gòu)體的所有字段     }     s1 := new(Student) // 定義指向結(jié)構(gòu)體的指針     s1.ClassName = "xiaomu"     fmt.Printf("ClassName:%sn", s1.ClassName) }

      struct的方法

      1、在struct中定義方法并且使用

      package main  import (     "fmt" )  type Student struct { //定義結(jié)構(gòu)體     name string     age  int }  func (stu *Student) OutName() { // 定義Student方法     fmt.Println(stu.name) }  func main() {     s1 := new(Student) // 定義指向結(jié)構(gòu)體的指針     s1.name = "xaiomu"     s1.OutName() }

      2、結(jié)構(gòu)體繼承結(jié)構(gòu)體,其中被繼承結(jié)構(gòu)體的方法全部為繼承結(jié)構(gòu)體吸收

      package main  import (     "fmt" )  type ClassName struct {     className string }  func (cla *ClassName) OutClassName() {     fmt.Println(cla.className) }  type Student struct { //定義結(jié)構(gòu)體     name      string     age       int     ClassName // 繼承ClassName結(jié)構(gòu)體的所有 }  func (stu *Student) OutName() { // 定義Student方法     fmt.Println(stu.name) }  func main() {     s1 := new(Student) // 定義指向結(jié)構(gòu)體的指針     s1.className = "xiaomu"     s1.OutClassName() }

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)