zoukankan      html  css  js  c++  java
  • 结构体

    结构体是用户定义的类型,表示一系列的集合。语法为 :type关键字  结构体名字 struct{ }

    1.结构体声明

    type Person struct {
        name  string
        sex  int
        age  int
    ----------------------------------
        sex,age  int    # 由于age和sex是相同类型的字段,可以定义在同一行
    }

    2.嵌套结构体

    type Person struct {
        name string
        sex ,age int
        hobby Hobby
    }
    
    type Hobby struct {
        id int
        name string
    }

     3.结构体嵌套+匿名字段

    type Person struct {
        name  string
        sex  ,age int
        Hobby
    
    }
    type Hobby struct {
        id int
        name  string
    }

     4.定义初始化

    func main() {
        person  :=Person{}    # 定义没有初始化
        var person Person
        var person Person=Person{name:"lqz"}  # 指名道姓传,可以只传一部分
        var person Person=Person{"lqz",1,19}  # 按位置传,必须要全传
        //person.name="lqz"    # 结构体是值类型,可以通过点(.)方法取值
        fmt.Println(person.name)   # 只有属性,没有方法
    }

    5.匿名结构体 

    a:=struct {
        name string
        age int
        }{"lqz",19}
        fmt.Printf(a.name)    # 取值

    6.结构体的零值

    p:=Person{name:"lqz"} # 一般用驼峰体来定义变量和函数
    pPoint: = &p  
    var pPoint *Person=&p
    fmt.Println(pPoint)
    fmt.Println(pPoint.name)    # 等价于 fmt.Println((*pPoint).name)

     7.结构镶嵌体

    package main  
    
    import "fmt"        
    
    func main() {
            p:=Person{name:"lqz",hobby:Hobby{10,"篮球"}}
        p:=Person{name:"lqz",hobby:Hobby{id:10,name:"篮球"}}
        p.hobby.id=101
        fmt.Println(p.hobby.name)
    
        #结构体嵌套加匿名字段
        p:=Person{name:"lqz",Hobby:Hobby{10,"篮球"}}
        //取p中的hobbyname
        fmt.Println(p.Hobby.hobbyname)
        fmt.Println(p.hobbyname)
    
        #变量提升过程中如果有重名的,就不提升了
        p:=Person{name:"lqz",Hobby:Hobby{10,"篮球"}}
        fmt.Println(p.Hobby.name)
        fmt.Println(p.name)
    }
  • 相关阅读:
    @Target:注解的作用目标
    Node.js学习笔记(2)
    Node.js学习笔记(1)
    javascript小记-javascript运行机制
    javascript小记-作用域
    javascript小记-闭包理解
    php中ajax跨域请求---小记
    饼状图一
    QPainter使用不同风格的QBrush来填充区域
    QPainter绘制特殊线条
  • 原文地址:https://www.cnblogs.com/blue-tea/p/12037285.html
Copyright © 2011-2022 走看看