美文网首页
Golang 结构体

Golang 结构体

作者: 邦_ | 来源:发表于2020-10-20 15:58 被阅读0次

package main

import "fmt"

type Person struct {
    name string
    age  int
    sex  string
}

func main() {

    //方法一
    var p1 Person
    p1.name = "张三"
    p1.age = 18
    p1.sex = "男"
    fmt.Println(p1)

    //方法二
    p2 := Person{
        name: "李四",
        age:  22,
        sex:  "女",
    }
    fmt.Println(p2)

    //方法三
    p3 := new(Person)
    p3.sex = "男"
    p3.name = "王五"
    (*p3).age = 30
    p3.age = 32 //语法糖,简化写法
    fmt.Println(p3)

    p4 := p3 // p3属于指针 地址传递  浅copy
    fmt.Println(&p3)
    fmt.Println(&p4)
    fmt.Println(p3.age)
    p4.age = 100
    fmt.Println(p3.age)

    p5 := p2 //相当于值传递 深copy
    fmt.Println(&p5)
    fmt.Println(&p2)
    fmt.Println(p2.age)
    p5.age = 121
    fmt.Println(p2.age)

    changeAge(p5) //值传递,深copy 改变不了原来的对象
    fmt.Println(p5.age)

    changeAge1(&p5) //地址传递 浅copy 会影响原来的对象的值
    fmt.Println(p5.age)

}

func changeAge(person Person) {

    person.age = 123

}

func changeAge1(person *Person) {

    person.age = 123

}


继承

type Person struct {
    name string
    age  int
    sex  string
    book Book
}

type Student struct {
    Person  //提升子段,学生的对象 可以直接访问Person的字段
    class  string
    number int
}


    var s1 = student{}
    s1.name = "张三"
    s1.age = 111
    s2 := Student{Person: Person{name: "1212"}, class: "1212121"}         //要指定子段名称的话
    s3 := Student{Person{"121", 121, "女", Book{"书", 12.1}}, "12121", 121} //不指定字段按顺序的话,需要初始化全部的

    fmt.Println(s2)
    fmt.Println(s3)

相关文章

  • Learn Golang In Day 9

    Learn Golang In Day 9 简介 结构体是自定义的数据结构 定义结构体 package main ...

  • golang 结构体

     一个结构体类型可以包含若干个字段,也可以不包含任何字段。空结构体可以关联上一些方法,从而看成是函数的特殊版本。 ...

  • Golang:结构体

    结构体 结构体(struct)是用户自定义的类型,代表若干字段的集合。有时将多个数据看做一个整体要比单独使用这些数...

  • Golang结构体

    C++中结构体(struct)和类(class)的主要区别有: struct没有权限控制字段 struct没有方法...

  • golang结构体

    定义 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合 结构体的定义 结构体定义需要使用 type 和 ...

  • Golang 结构体

    继承

  • golang 加载jison而无需定义一堆结构体

    golang 加载jison而无需定义一堆结构体

  • 知识分享之Golang——gorm的结构体常用标签

    知识分享之Golang——gorm的结构体常用标签 背景 知识分享之Golang篇是我在日常使用Golang时学习...

  • Go核心编程-面向对象 [OOP]

    Golang也是支持面向对象(OOP)编程特性的语言,但是Golang中没有类(class),而Go语言的结构体(...

  • Golang(十) 结构体

    结构体 什么是结构体 Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。 结...

网友评论

      本文标题:Golang 结构体

      本文链接:https://www.haomeiwen.com/subject/srarmktx.html