Golang学习笔记 结构体和指针
2017-06-28 23:15
302 查看
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结构体struct学习笔记
- 【学习笔记】【C语言】指向结构体的指针
- 指向结构体数组的指针 学习笔记
- Golang 笔记 2 函数、结构体、接口、指针
- C语言学习笔记 数组 指针 结构体
- 指向结构体变量的指针 学习笔记
- <深入理解C指针>学习笔记和总结 第六章 指针和结构体
- 黑马程序员—C学习笔记—结构体变量五种定义方式与指针结构体数组探究
- <深入理解C指针>学习笔记和总结 第六章 指针和结构体 第二部分
- C语言指针学习笔记:指向结构体的指针
- 超强的指针学习笔记
- C/C++学习笔记:指针与二维数组
- C++学习笔记二 —— 3.3 指针类型
- C/C++学习笔记:指针传值
- C/C++学习笔记:指针与字符串
- C++学习笔记(3)——成员变量、成员函数的指针
- c++指针学习笔记--交换两个字符串数据
- C语言指针学习笔记
- 超强的指针学习笔记
- c++学习笔记2——指向字符串的指针数组?