golang-結構體與指針


1.結構體

  結構體是一系列具有指定數據類型的數據類型 ,就是一個結構體中存儲多個不同類型的數據字段 ,用於創建傳遞復雜數據結構

  結構體可以理解為面向對象的模板 ,但是go並非面向對象 ,結構體只是一種新的數據類型

2.結構體創建

  結構體實例的數據字段不賦值 ,默認就是該類型的零值

  嵌套結構體可以完成更為復雜的操作 ,就是一個結構體某個字段是另一個結構體類型

  結構體可以使用 關鍵字var創建   

 1 package main
 2 
 3 import (
 4     "fmt"
 5 )
 6 
 7 type Computer struct {
 8     Vendor Ven
 9     Cpu    string
10     Mem    string
11     Disk   string
12 }
13 
14 type Ven struct {
15     Name    string
16     address string
17 }
18 
19 func main() {
20     V1 := Ven{
21         Name:"Inter",
22         address:"美國"}
23     C1 := Computer{
24         Vendor: V1,
25         Cpu:    "core i9",
26         Mem:    "金士頓",
27         Disk:   "三星",
28     }
29     var C2 Computer
30     fmt.Println(C2.Cpu=="")   //go會默認賦零值""
31     C2.Vendor = V1
32     C2.Cpu = "core i7"
33     C2.Mem = "三星"
34     C2.Disk = "三星"
35 
36     fmt.Println(C1.Vendor,C2.Disk)
37 
38 
39 }
View Code

3.公有私有

  go的結構體和他本身的字段都可能被導出使用 ,規定首字母大寫可以導出

4.區分值引用與指針引用

  值引用是創建副本 ,原始值與新值沒關系

  指針引用是通過指針指向原值的內存位置 ,修改會影響原值

  如果想通過引用修改原值使用指針 ,否則使用值引用

 1 package main
 2 
 3 import "fmt"
 4 
 5 type Ven struct {
 6     Name    string
 7     address string
 8 }
 9 
10 func main() {
11     a1 := Ven{
12         Name:    "亞馬遜",
13         address: "美國",
14     }
15 
16     b1 := &a1 //指針引用
17     b2 := a1
18 
19     fmt.Println(a1.Name,b1.Name,b2.Name)
20     a1.Name = "微軟"
21     fmt.Println(a1.Name,b1.Name,b2.Name)  
22     //亞馬遜 亞馬遜 亞馬遜
23     //微軟 微軟 亞馬遜
24 }
View Code

 

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM