Golang结构体和指针

作者: 乐百川 | 来源:发表于2017-06-28 23:16 被阅读253次

Golang是一门很特殊的语言,虽然它出生比较晚,但是在很多地方却和现在的编程语言有所不同。现在的编程语言要么是函数式的、要么是面向对象的,而Go语言却有指针、结构体这些概念,并解决了C语言的一些坑。从这个角度上说,Golang可以看做C语言的填坑加强版。

结构体

定义结构体

定义结构体和C语言一样,使用struct关键字。在结构体内部定义它们的成员变量和类型。如果成员变量的类型相同还可以把它们写到同一行。

type Person struct {
    age  int
    name string
}

初始化

初始化结构体需要使用一个特殊一点的语法,这就是结构体字面量。在结构体字面量中,可以按照顺序初始化结构体、也也可以按照关键字初始化结构体。如果按照关键字初始化结构体,可以只指定部分值,未指定的值将会使用默认值来初始化。

p1 := Person{24, "易天"}
p2 := Person{age: 24, name: "易天"}
p3 := Person{age: 24}
p4 := Person{name: "张三"}
fmt.Println(p1, p2, p3, p4)

访问结构体

最后要说的就是访问结构体了。结构体的成员都是公有的,所以可以直接用点号.访问。

p1.age = 26
p1.name = "王五"
fmt.Println(p1)

指针

Go的指针

如果学习过C语言的话,对指针的概念应该会比较熟悉。在Go语言中,直接砍掉了最复杂的指针运算的部分,只留下了获取指针(&运算符)和获取对象(*运算符)的运算。

a, b := 3, 5
pa, pb := &a, &b
fmt.Println(*pa, *pb)

隐式解引用

对于一些复杂类型的指针, 如果要访问成员变量的话,需要写成类似(*p).field的形式,Go提供了隐式解引用特性,我们只需要p.field即可访问相应的成员。

p1 := &Person{name: "易天", age: 24}
fmt.Println((*p1).name)
fmt.Println(p1.name)

相关文章

  • Golang 指针和结构体

    Golang 指针和结构体 于c语言相同,go中也有指针和结构体的概念。指针表示变量的内存地址,结构体用来存储同一...

  • Golang结构体和指针

    Golang是一门很特殊的语言,虽然它出生比较晚,但是在很多地方却和现在的编程语言有所不同。现在的编程语言要么是函...

  • C语言20 结构体指针

    C语言20 结构体指针 探测结构体指针的特性 ++、-- 加法与减法 指针相减 使用结构体指针 结构体指针一定要指...

  • 6.结构体相关

    一 C 结构体和结构体指针 eg1: 一 结构体里面定义函数 通过结构体指针访问结构体里面定义的函数。 eg2:

  • 结构体的基本操作

    结构体定义和初始化 结构体变量相互赋值 结构体数组 结构体嵌套一级指针 结构体嵌套二级指针 结构体偏移量 联合体 ...

  • 正确理解golang slice的复制

    slice 三个属性 golang 的slice是一个指向底层的数组的指针结构体。 这个结构体有三个属性,1.指...

  • 结构体和结构体指针

    定义: 下边定义了两种类型: 1.ZJWPoint为结构体类型; 2.ZJWPointClass为指向ZJWPoi...

  • C语言-5、结构体

    写法一 写法二 写法三 结构体指针 结构体指针 与 动态内存开辟 结构体的数组 结构体与结构体指针 取别名 取别名...

  • Day10

    指针 指针与函数 练习回调函数 结构体 基本概念 结构体变量初始化 定义结构体变量 结构体变量作用域结论; 和变量...

  • 结构体(二)

    0. 指针和结构体 概念:通过 指针 保存 结构体变量地址struct Person { char *name;...

网友评论

    本文标题:Golang结构体和指针

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