乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      結(jié)構(gòu)體

       Coder編程 2022-12-02 發(fā)布于北京

      結(jié)構(gòu)體定義和使用

      #pargram mark 結(jié)構(gòu)體定義 
      /*
       type 結(jié)構(gòu)體名稱(chēng) struct {
      //結(jié)構(gòu)體成員
      成員 + 數(shù)據(jù)類(lèi)型
      }
      */
      ?
      #pargram mark 定義結(jié)構(gòu)體
      type Student struct{
      name  string
      age int
      sex string
      }
      ?
      // var 結(jié)構(gòu)體變量名 結(jié)構(gòu)體數(shù)據(jù)類(lèi)型 = {姓名,年齡 ....}
      ?
      //自動(dòng)推導(dǎo)類(lèi)型 stu := Student{"曹操", 65, "男", 80, "河南許昌"}
      ?
      var stu Student = Student{"sobot", 18, "man"}

      #pargram mark 聲明結(jié)構(gòu)體變量
      var stu Student
      stu.name = "sobot"
      stu.age = 28
      stu.sex = "man"
      ?
      //獲取結(jié)構(gòu)體成員   通過(guò)點(diǎn)語(yǔ)法
      fmt.Println(stu.name)
      ?

      結(jié)構(gòu)體的賦值和比較

      type Stud struct {
      name  string
      age   int
      sex   string
      }
      //MARK: 創(chuàng)建結(jié)構(gòu)體變量
      stu := Stud{"劉備", 58, "男"}
      //MARK:將一個(gè)結(jié)構(gòu)體變量賦值給另外一個(gè)結(jié)構(gòu)體變量 前提是 具有相同的結(jié)構(gòu)體類(lèi)型
      var s Stud = stu
      //修改結(jié)構(gòu)體變量
      fmt.Println(stu)
      fmt.Println(s)
      ?
      fmt.Printf("%p\n", &s)
      fmt.Printf("%p\n", &stu)
      ?
      /********* 結(jié)構(gòu)體比較 ***********/
      stu := Stud{"關(guān)羽", 54, "男"}
      ?
      s := Stud{"張飛", 50, "男"}
      ?
      //比較兩個(gè)結(jié)構(gòu)體變量 比較結(jié)構(gòu)體成員內(nèi)容
      ?
      if stu == s {
      fmt.Println("相同")
      } else {
      fmt.Println("不同")
      }
      ?

       

      結(jié)構(gòu)體切片

      type Student struct{
      name string
      age int
      }
      ?
      //var slice []結(jié)構(gòu)體數(shù)據(jù)類(lèi)型
      ?
      //var slice []Student=make([]Student,5)
      //slice[0] = Student{"劉備", 50, "男", 60, "巴蜀"}
      ?
      var slice []Student
      slice = append(slice, Student{"劉備", 50},
      Student{"孫尚香", 20, "女"},
      Student{"甄宓", 28, "女"})

      //在內(nèi)存中存儲(chǔ)兩個(gè)相同內(nèi)容 獨(dú)立內(nèi)存地址的數(shù)據(jù)
      //修改一個(gè)不影響另外一個(gè)
      s := make([]Student, 3)
      copy(s, slice)

      結(jié)構(gòu)體作為map的值

      m:=make(map[int]Student)
      ?
      //賦值
      m[1001] = Student{"a",20}
      m[1002] = Student{"b",30}
      m[1003] = Student{"c",20}
      m[1004] = Student{"f",18}

      //注意:將結(jié)構(gòu)體作為map的value時(shí) 在修改數(shù)據(jù)時(shí) 必須整體修改
      m[1003] = Student{"修改",17}
      ?
      //可以獲取 ,不能修改
      fmt.Println(m[1001].name)
      ?
      //遍歷map中的數(shù)據(jù)
      for k,v:=range m {
      fmt.Println(k,v)
      }
      ?
      delete(m,1003)
      delete(m,1001)
      fmt.Println(m)
      ?
      /************** 結(jié)構(gòu)體map值為切片 **********/
      m:=make(map[int][]Student)
      ?
      m[1001] = []Student{
      {"A",20},
      {"B",18},
      }
      ?
      m[1002] = []Student{
      {"C",17},
      {"F",20},
      }
      ?
      fmt.Println(m)
      ?

      結(jié)構(gòu)體嵌套結(jié)構(gòu)體

      type Person struct {
      name string
      age int
      sex string
      ?
      //結(jié)構(gòu)體不能嵌套本結(jié)構(gòu)體 在創(chuàng)建結(jié)構(gòu)體時(shí) 無(wú)法預(yù)知內(nèi)存大小 (不要相互引用 A引用A,或是A引用B,B引用A)
      //Person//err
      }
      ?
      //結(jié)構(gòu)體嵌套寫(xiě)法1
      type Teacher1 struct{
      p Person
      subject string
      worktime int
      }
      //結(jié)構(gòu)體嵌套寫(xiě)法2
      type Teacher2 struct{
      //如果結(jié)構(gòu)體嵌套結(jié)構(gòu)體 通過(guò)匿名字段使用結(jié)構(gòu)體
      Person   //匿名字段
      subject string
      worktime int
      }
      ?
      //結(jié)構(gòu)體初始化
      var tea Teacher1 = Teacher1{Person{"法師", 32, "男"}, "go語(yǔ)言開(kāi)發(fā)", 10}
      //修改成員變量
      tea.p.name = "大帥哥"
      fmt.Println(tea.p.name)
      ?
      //結(jié)構(gòu)體初始化
      var tea Teacher2 = Teacher2{Person{"法師 ", 32, "男"}, "go語(yǔ)言開(kāi)發(fā)", 10}
      //修改數(shù)據(jù)
      tea.name = "大帥哥"
      fmt.Println(tea.name)

      結(jié)構(gòu)體作為函數(shù)參數(shù)

      /********************  值傳遞 形參不能修改實(shí)參的值 ********************/
      //結(jié)構(gòu)體變量作為函數(shù)參數(shù)
      func test (s students){
      fmt.Println(s)
      }
      ?
      //結(jié)構(gòu)體數(shù)組作為函數(shù)參數(shù)  
      func test1(arr [3]int){
      fmt.Println(arr)
      }
      //結(jié)構(gòu)體數(shù)組作為函數(shù)參數(shù)是值傳遞 形參不能修改實(shí)參的值
      arr:=[3]Student{"法師",32,男"},{"玉姐",18,"女"},{"丁丁",26,"男"}}
      test1(arr)
      ?
      /******************** 地址傳遞(引用傳遞) 形參可以修改實(shí)參的值 map,slice ********************/
      //結(jié)構(gòu)體切片作為函數(shù)參數(shù)
      func test2(slice []Students) {
      fmt.Printf("%p\n", slice)
      slice[0].name = "大帥哥"
      }
      //結(jié)構(gòu)體map作為函數(shù)參數(shù)
      func test3(m map[int]Students) {
      //修改
      //m[1001]=Students{"大帥哥",32,"男"}
      //刪除
      //delete(m,1001)
      //添加數(shù)據(jù)
      m[1111]=Students{"大光頭",40,"男"}
      }
      slice := [] Student{{"法師", 32, "男"}, {"玉姐", 18, "女"}, {"丁丁", 26, "男"}}
      test2(slice)
      ?
      m := map[int] Student{1001: {"法師", 32, "男"}, 1003: {"玉姐", 18, "女"}, 1008: {"丁丁", 26, "男"}}
      test3(m)
      ?

      指針

      指針:
      指針是一種數(shù)據(jù)類(lèi)型,存儲(chǔ)的是變量地址

      指針類(lèi)型定義:
      var 指針變量名 指針類(lèi)型 = &變量
      ?
      可以通過(guò)指針間接修改變量的值
      *指針變量 = 值

      *取值運(yùn)算符
      &取地址運(yùn)算符
      ?

      new創(chuàng)建空間

      ```
      //聲明指針 默認(rèn)值為nil nil是一個(gè)內(nèi)存地址編號(hào)為0的空間
      var p *int

      //創(chuàng)建內(nèi)存空間 賦值給質(zhì)變量
      //new(數(shù)據(jù)類(lèi)型)
      p = new(int)
      *p=123
      ```

       

       

       

       

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多