<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Loading

      Golang struct結構

      結構struct

      • Go中的struct與C中的struct非常相似,并且Go沒有class,代替了class的位置,但并沒有代替class的功能
      • 使用type struct{} 定義結構,名稱遵循可見性規則
      • 支持指向自身的指針類型成員
      • 支持匿名結構,可用作成員或定義成員變量
      • 匿名結構也可以用于map的值
      • 可以使用字面值對結構進行初始化
      • 允許直接通過指針來讀寫結構成員
      • 相同類型的成員可進行直接拷貝賦值
      • 支持==與!=比較運算符,但不支持>或<
      • 支持匿名字段,本質上是定義了以某個類型名為名稱的字段
      • 嵌入結構作為匿名字段看起來像繼承,但不是繼承
      • 可以使用匿名字段指針
      • tag是結構體的元信息,可以在運行的時候通過反射機器讀取出來;字段類型的后面,以反引號擴起來的key-value結構的字符串,多個tag以逗號隔開。

      結構的定義

      package main
      
      import (
      	"fmt"
      )
      
      type Person struct { //結構也是一中類型
      	Name string //定義struct的屬性
      	Age  int
      }
      
      func main() {
      	a := Person{}
      	a.Name = "joe" //對struct的屬性進行操作,類型與class的使用方法
      	a.Age = 19
      	fmt.Println(a)
      }
      
      

      字面值初始化

      package main
      
      import (
      	"fmt"
      )
      
      type Person struct {
      	Name string
      	Age  int
      }
      
      func main() {
      	a := Person{
      		Name: "jack",
      		Age:  19, //對結構的屬性進行字面值的初始化
      	}
      	fmt.Println(a)
      }
      

      結構的傳遞

      package main
      
      import (
      	"fmt"
      )
      
      type Person struct {
      	Name string
      	Age  int
      }
      
      func main() {
      	a := Person{
      		Name: "jack",
      		Age:  19, //對結構的屬性進行字面值的初始化
      	}
      	fmt.Println(a)
      	A(a)
      	fmt.Println(a) //結構也是一種值類型,對它進行傳遞的時候,也是進行了值得拷貝
      }
      func A(per Person) {
      	per.Age = 13
      	fmt.Println("A", per)
      }
      PS G:\mygo\src\mytest> go run .\temp.go
      {jack 19}
      A {jack 13}
      {jack 19}
      
      package main
      
      import (
      	"fmt"
      )
      
      type Person struct {
      	Name string
      	Age  int
      }
      
      func main() {
      	a := Person{
      		Name: "jack",
      		Age:  19, //對結構的屬性進行字面值的初始化
      	}
      	fmt.Println(a)
      	A(&a)
      	fmt.Println(a) //結構也是一種值類型,對它進行傳遞的時候,也是進行了值得拷貝
      }
      func A(per *Person) { //通過一個指針進行傳遞,此時就不是值得拷貝了
      	per.Age = 13
      	fmt.Println("A", per)
      }
      PS G:\mygo\src\mytest> go run .\temp.go
      {jack 19}
      A &{jack 13}
      {jack 13}
      
      package main
      
      import (
      	"fmt"
      )
      
      type Person struct {
      	Name string
      	Age  int
      }
      
      func main() {
      	a := &Person{
      		Name: "jack",
      		Age:  19, //此時初始化的時候就將這個struct的指針取出來
      	}
      	//在進行struct的初始化的時候,就加上&取地址符號
      	fmt.Println(a)
      	A(a)
      	B(a)
      	fmt.Println(a) //結構也是一種值類型,對它進行傳遞的時候,也是進行了值得拷貝
      }
      func A(per *Person) { //通過一個指針進行傳遞,此時就不是值得拷貝了
      	per.Age = 13
      	fmt.Println("A", per)
      }
      func B(per *Person) { //通過一個指針進行傳遞,此時就不是值得拷貝了
      	per.Age = 15
      	fmt.Println("B", per)
      }
      PS G:\mygo\src\mytest> go run .\temp.go
      &{jack 19}
      A &{jack 13}
      B &{jack 15}
      &{jack 15}
      

      匿名結構

      package main
      
      import (
      	"fmt"
      )
      
      func main() {
      	a := &struct { //匿名結構,需要先對結構本身進行一個定義
      		Name string
      		Age  int
      	}{
      		Name: "jack",
      		Age:  20,
      	}
      	fmt.Println(a)
      }
      
      

      匿名結構的嵌套

      package main
      
      import (
      	"fmt"
      )
      
      type Person struct {
      	Name    string
      	Age     int
      	Contact struct {
      		Phone, City string //匿名結構嵌套在Person中
      	}
      }
      
      func main() {
      	a := Person{Name: "Jack", Age: 20}
      	a.Contact.Phone = "123321" //通過這種方法對嵌套在Person中的匿名結構進行字面值的初始化
      	a.Contact.City = "BeiJing"
      	fmt.Println(a)
      }
      PS G:\mygo\src\mytest> go run .\temp2.go
      {Jack 20 {123321 BeiJing}}
      

      匿名字段

      package main
      
      import (
      	"fmt"
      )
      
      type Person struct {
      	string //匿名字段 在進行字面值初始化的時候 必須嚴格按照字段聲明的順序
      	int
      }
      
      func main() {
      	a := Person{"Jack", 20} //此時將string 和 int類型對調的時候就會報錯
      	fmt.Println(a)
      }
      
      

      結構相同類型的比較

      package main
      
      import (
      	"fmt"
      )
      
      type Person struct {
      	Name string
      	Age  int
      }
      
      func main() {
      	a := Person{Name: "Jack", Age: 20}
      	b := Person{Name: "Jack", Age: 20}
      
      	fmt.Println(a == b)
      }
      PS G:\mygo\src\mytest> go run .\temp3.go
      true
      

      嵌入結構

      package main
      
      import (
      	"fmt"
      )
      
      type human struct {
      	Sex int
      }
      type teacher struct {
      	human
      	Name string
      	Age  int
      }
      type student struct {
      	human //這里的human也是一種類型,此時它相當于一種匿名字段,嵌入結構作為匿名字段的話
      	//它本質上是將結構名稱作為我們的字段名稱
      	Name string
      	Age  int
      }
      
      func main() {
      	a := teacher{Name: "Jack", Age: 20, human: human{Sex: 0}} //因此我們需要在這里進行這種初始化
      	b := student{Name: "Tom", Age: 19, human: human{Sex: 1}}
      	a.Name = "Fack"
      	a.Age = 13
      	a.human.Sex = 100 //保留這種調用的方法,是因為會涉及到名稱的沖突
      	//a.Sex = 101 這種寫法也是可以的
      	fmt.Println(a, b)
      }
      PS G:\mygo\src\mytest> go run .\temp3.go
      {{100} Fack 13} {{1} Tom 19}
      

      tag的詳解

      package main
      
      import (
      	"encoding/json"
      	"fmt"
      )
      
      type User struct {
      	Username  string `json:"username"`
      	Sex       string `json:"sex"`
      	Age       int
      	AvatarUrl string
      }
      
      func main() {
      	user := &User{
      		Username:  "user01",
      		Sex:       "男",
      		Age:       18,
      		AvatarUrl: "http://xxx.xxx.com/xxx.png",
      	}
      	data, _ := json.Marshal(user)
      	fmt.Printf("json str:%s\n", string(data))
      }
      
      
      posted @ 2017-10-16 09:13  Devops、小鐵匠  閱讀(18288)  評論(0)    收藏  舉報
      主站蜘蛛池模板: a在线免费| 黑人av无码一区| 高清精品视频一区二区三区| 国产又黄又爽又刺激的免费网址| 男女激情一区二区三区| 内射干少妇亚洲69xxx| 亚洲日本精品国产第一区| 国产偷窥厕所一区二区| 国产精品中文av专线| 亚洲综合伊人久久大杳蕉| 日韩高清福利视频在线观看| 在线观看中文字幕国产码| 麻豆国产传媒精品视频| 东至县| 色伦专区97中文字幕| 久久无码专区国产精品| 亚洲岛国成人免费av| 色综合天天综合网国产人| 日本人妻巨大乳挤奶水免费| 丁香婷婷综合激情五月色| 国产精品一区中文字幕| 男受被做哭激烈娇喘gv视频| 亚洲中文字幕精品第三区| 丁香五月亚洲综合在线国内自拍| 延吉市| 国内在线视频一区二区三区| 亚洲女同精品中文字幕| 色综合天天综合天天综| 虎白女粉嫩尤物福利视频| 色吊丝永久性观看网站| 亚洲成人av一区二区| 亚洲高潮喷水无码AV电影| 亚洲综合精品第一页| 亚洲一区二区中文av| 日韩精品区一区二区三vr| 日韩精品亚洲精品第一页| 国产三级精品三级色噜噜| 国产视频最新| 中字幕人妻一区二区三区| h无码精品3d动漫在线观看| 淳化县|