美文网首页
第03天(复合类型)_结构体的基本使用

第03天(复合类型)_结构体的基本使用

作者: lucas777 | 来源:发表于2019-12-13 14:42 被阅读0次

29_结构体普通变量初始化

package main //必须有个main包

import "fmt"

//定义一个结构体类型
type Student struct {
    id   int
    name string
    sex  byte //字符类型
    age  int
    addr string
}

func main() {
    //顺序初始化,每个成员必须初始化
    var s1 Student = Student{1, "mike", 'm', 18, "bj"}
    fmt.Println("s1 = ", s1)

    //指定成员初始化,没有初始化的成员,自动赋值为0
    s2 := Student{name: "mike", addr: "bj"}
    fmt.Println("s2 = ", s2)
}

30_结构体指针变量初始化.go

package main //必须有个main包

import "fmt"

//定义一个结构体类型
type Student struct {
    id   int
    name string
    sex  byte //字符类型
    age  int
    addr string
}

func main() {
    //顺序初始化,每个成员必须初始化, 别忘了&
    var p1 *Student = &Student{1, "mike", 'm', 18, "bj"}
    fmt.Println("p1 = ", p1)

    //指定成员初始化,没有初始化的成员,自动赋值为0
    p2 := &Student{name: "mike", addr: "bj"}
    fmt.Printf("p2 type is %T\n", p2)
    fmt.Println("p2 = ", p2)
}

31_结构体成员的使用:普通变量.go

package main //必须有个main包

import "fmt"

//定义一个结构体类型
type Student struct {
    id   int
    name string
    sex  byte //字符类型
    age  int
    addr string
}

func main() {
    //定义一个结构体普通变量
    var s Student

    //操作成员,需要使用点(.)运算符
    s.id = 1
    s.name = "mike"
    s.sex = 'm' //字符
    s.age = 18
    s.addr = "bj"
    fmt.Println("s = ", s)
}

32_结构体成员的使用:指针变量.go

package main //必须有个main包

import "fmt"

//定义一个结构体类型
type Student struct {
    id   int
    name string
    sex  byte //字符类型
    age  int
    addr string
}

func main() {
    //1、指针有合法指向后,才操作成员
    //先定义一个普通结构体变量
    var s Student
    //在定义一个指针变量,保存s的地址
    var p1 *Student
    p1 = &s

    //通过指针操作成员  p1.id 和(*p1).id完全等价,只能使用.运算符
    p1.id = 1
    (*p1).name = "mike"
    p1.sex = 'm'
    p1.age = 18
    p1.addr = "bj"
    fmt.Println("p1 = ", p1)

    //2、通过new申请一个结构体
    p2 := new(Student)
    p2.id = 1
    p2.name = "mike"
    p2.sex = 'm'
    p2.age = 18
    p2.addr = "bj"
    fmt.Println("p2 = ", p2)
}

33_结构体比较和赋值.go

package main //必须有个main包

import "fmt"

//定义一个结构体类型
type Student struct {
    id   int
    name string
    sex  byte //字符类型
    age  int
    addr string
}

func main() {
    s1 := Student{1, "mike", 'm', 18, "bj"}
    s2 := Student{1, "mike", 'm', 18, "bj"}
    s3 := Student{2, "mike", 'm', 18, "bj"}
    fmt.Println("s1 == s2 ", s1 == s2)
    fmt.Println("s1 == s3 ", s1 == s3)

    //同类型的2个结构体变量可以相互赋值
    var tmp Student
    tmp = s3
    fmt.Println("tmp = ", tmp)
}

34_结构体作为函数参数.go

package main //必须有个main包

import "fmt"

//定义一个结构体类型
type Student struct {
    id   int
    name string
    sex  byte //字符类型
    age  int
    addr string
}

func test02(p *Student) {
    p.id = 666
}

func main() {
    s := Student{1, "mike", 'm', 18, "bj"}

    test02(&s) //地址传递(引用传递),形参可以改实参
    fmt.Println("main: ", s)

}

func test01(s Student) {
    s.id = 666
    fmt.Println("test01: ", s)
}

func main01() {
    s := Student{1, "mike", 'm', 18, "bj"}

    test01(s) //值传递,形参无法改实参
    fmt.Println("main: ", s)

}

相关文章

  • 第03天(复合类型)_结构体的基本使用

    29_结构体普通变量初始化 30_结构体指针变量初始化.go 31_结构体成员的使用:普通变量.go 32_结构体...

  • Go Struct

    Go语言通过自定义结构的方式来实现新的类型,结构体是类型中带有成员的复合类型。 Go语言使用结构体和结构体成员来描...

  • C语言基础 之 复合数据类型和类型定义

    复合类型是一种自定义类型,用于扩展基本数据类型。复合数据类型包括:结构类型、共用体类型和枚举类型。 用 typed...

  • Go(结构体)

    五、结构体(struct) 5.1 定义 结构体是类型中带有成员的复合类型,结构体的定义格式: type可以将各种...

  • NSValue

    NSValue是NSNumber的父类结构体 指针 复合类型 使用NSValue来封装 int a[10]也可以...

  • 3.go快速入门笔记-复合数据类型

    复合数据类型是由基本数据类型以各种方式组合而构成的.比较常用的复合数据类型有:数组,slice,map和结构体.数...

  • 结构体

    基本概念 结构体:属于用户自定义的数据类型,允许用户存储不同的数据类型。 定义和使用 结构体数组 结构体指针 结构...

  • 结构体struct简单理解

    1.1 结构体的概念 结构体(struct):是一种复合数据类型,结构类型。 结构体,怎么理解?你可以把它想象成一...

  • 郝斌C语言笔记 -- 预备知识

    预备知识 1.数据类型 1.基本数据类型 2.复合数据类型 结构体 枚举 共用体 2.变量 1.什么是变量 变量的...

  • Swift-类和结构体(class&struct)

    较传统的OC语言,Swift使用了更多的结构体,在 Swift 中,所有的基本类型,都是结构体类型 整数(Inte...

网友评论

      本文标题:第03天(复合类型)_结构体的基本使用

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