美文网首页一个程序猿的奋斗史php开发
Go语言学习笔记14.复合类型-结构体struct

Go语言学习笔记14.复合类型-结构体struct

作者: 快乐的提千万 | 来源:发表于2019-11-06 09:15 被阅读0次

结构体

和C一样, 将多种不同类型的变量组合到一起则是结构体。

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, "teemo", 'm', 18, "jz"}
    fmt.Println("s1 = ", s1)

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

    //操作和获取用.
    s1.id = 2
    fmt.Println("s1 = ", s1)

    //////////////////////////结构体指针////////////////////////

    //顺序初始化,每个成员必须初始化, 别忘了&
    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)

    //通过指针操作成员  p1.id 和(*p1).id完全等价,只能使用.运算符
    p1.id = 2
    fmt.Println("p1 = ", p1)
}

同类型的2个结构体变量可以相互赋值

结构体做参数

一样,也有值传递和地址传递

package main //必须有个main包

import "fmt"

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

func test01(s Student) {
    s.id = 666
    fmt.Println("test01: ", s) // {666 teemo 109 18 bj}
}

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

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

    test02(&s) //地址传递(引用传递),形参可以改实参
    fmt.Println("main: ", s) //{666 teemo 109 18 bj}

    s2 := Student{1, "teemo", 'm', 18, "bj"}
    test01(s2) //值传递,形参无法改实参
    fmt.Println("main: ", s2)//{1 teemo 109 18 bj}
}

相关文章

  • Go语言学习笔记14.复合类型-结构体struct

    结构体 和C一样, 将多种不同类型的变量组合到一起则是结构体。 同类型的2个结构体变量可以相互赋值 结构体做参数 ...

  • 第十四章:Go语言结构体struct

    1. 结构体 struct 1.1 概述 Go语言可以通过自定义的形式形成新的类型,结构体是类型中带有成员的复合类...

  • Go Struct

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

  • Go 专栏|复合数据类型:字典 map 和 结构体 struct

    原文链接: Go 专栏|复合数据类型:字典 map 和 结构体 struct[https://mp.weixin....

  • 《Go语言四十二章经》第十八章 Struct 结构体

    《Go语言四十二章经》第十八章 Struct 结构体 作者:李骁 18.1结构体(struct) Go 通过结构体...

  • Go(结构体)

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

  • golang数据类型

    Go语言中有四种复合数据类型:数组,slice,map,结构体 数组和结构体都是聚合类型,长度固定。而slice和...

  • golang继承与接口

    继承 结构体 Go语言的结构体(struct)和其他语言的类(class)有同等的地位,但Go语言放弃了包括继 承...

  • go语言的结构体(struct)

    简单介绍下结构体struct: type name struct {xx1 类型xx2 类型...} 结果: go...

  • 结构体struct相关知识

    结构体struct相关知识 概念结构体是用户根据实际需求,定义的复合数据类型 和class的区别在C语言中,str...

网友评论

    本文标题:Go语言学习笔记14.复合类型-结构体struct

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