zoukankan      html  css  js  c++  java
  • golang-结构体的使用

    package main
    
    import (
        "fmt"
        "unsafe"
    )
    
    type Person struct {
        name string
        sex byte
        age int
    }
    
    type Student struct {
        p []Person
        id []int
        score [1000]int
    }
    
    func test(man Person)  {
        fmt.Println("test temp size:", unsafe.Sizeof(man))
    
        man.name = "name1"
        man.age = 33
    
        fmt.Println("test: man", man)
    }
    
    func main()  {
        // 1. 顺序初始化, 必须全部初始化完整
        var man Person = Person{"andy", 'm', 18}
        fmt.Println("man:", man)
    
        // 2. 部分初始化
        man2 := Person{sex:'f', age:19}
        fmt.Println("man2:", man2)
        // 索引成员变量 “.”
        fmt.Printf("man2.name = %q
    ", man2.name)
    
        var man3 Person
        man3.name = "mike"
        man3.sex = 'm'
        man3.age = 99
        fmt.Println("man3:", man3)
        man3.age = 1073
        fmt.Println("man3:", man3)
    
        // 结构体比较
        var p1 Person = Person{"andy", 'm', 18}
        var p2 Person = Person{"andy", 'm', 18}
        var p3 Person = Person{"andy", 'm', 181}
    
        fmt.Println("p1 == p2 ?", p1 == p2)
        fmt.Println("p1 == p3 ?", p1 == p3)
    
        // 相同类型结构体赋值
        var tmp Person
        fmt.Println("tmp", tmp)
        tmp = p3
        fmt.Println("tmp", tmp)
    
        // 函数内部使用结构体传参
        var temp Person
        fmt.Println("main temp size:", unsafe.Sizeof(temp))
        test(temp)                    // 值传递。将实参的值拷贝一份给形参。
        fmt.Println("temp", temp)
    
        fmt.Printf("&tmp = %p
    ", &temp)
        fmt.Printf("&temp.name = %p
    ", &(temp.name))
    
        fmt.Println("main temp size:", unsafe.Sizeof(true))  // 1 /0
    }
  • 相关阅读:
    Joshua Bloch错了? ——适当改变你的Builder模式实现
    集成基于OAuth协议的单点登陆
    集成基于CAS协议的单点登陆
    数据库设计中的Soft Delete模式
    完成C++不能做到的事
    ExtJS in Review
    DTO – 服务实现中的核心数据
    保存好你的密码 —— 从芝麻金融被攻破说起
    WPF
    C# 反编译防范
  • 原文地址:https://www.cnblogs.com/landv/p/10984066.html
Copyright © 2011-2022 走看看