zoukankan      html  css  js  c++  java
  • 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

      

  • 相关阅读:
    KBEngine源码:EntityCall
    skynet 学习笔记-sproto模块(2)
    mongodb:为什么用mongodb
    编写高效服务器程序,需要考虑的因素
    b+树
    mysql:架构
    超越函数/微分方程 /积分中的技术/级数
    积分从入门到放弃<2>
    PyQt4 / PyQt5
    图形学算法:
  • 原文地址:https://www.cnblogs.com/quguanwen/p/11751712.html
Copyright © 2011-2022 走看看