首页 > 其他 > 详细

golang-结构体与指针

时间:2019-10-28 18:30:28      阅读:111      评论:0      收藏:0      [点我收藏+]

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

 

 

 

  

golang-结构体与指针

原文:https://www.cnblogs.com/quguanwen/p/11751712.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!