当前位置:网站首页>【go语言入门笔记】13、 结构体(struct)
【go语言入门笔记】13、 结构体(struct)
2022-08-04 05:28:00 【不负卿@】
提示:Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念。
Go语言的结构体与“类”都是复合结构体,但Go语言中结构体的内嵌配合接口比面向对象具有更高的扩展性和灵活性。
Go语言不仅认为结构体能拥有方法,且每种自定义类型也可以拥有自己的方法。
结构体(struct) 是Go语言通过用自定义的方式形成新的类型,结构体是类型中带有成员的复合类型。
对象思维:结构体和结构体成员,来描述真实世界的实体和实体对应的各种属性。
结构体成员:由一系列的成员变量构成,这些成员变量也被称为“字段”。
字段有以下特性:
- 字段拥有自己的类型和值。
- 字段名必须唯一。
- 字段的类型也可以是结构体,甚至是字段所在结构体的类型。
1、 定义结构体
结构体的定义格式如下:
type 结构体变量名 struct{
字段1 字段1数据类型
字段2 字段2数据类型
}
例:
package main
import (
)
func main() {
type zhangsan struct{
name string
age int
addr,tel string //也可以写到一行
}
}
2、实例化结构体
2.1 基本的实例化形式
例:
package main
import (
"fmt"
)
func main() {
type user struct {
name string
age int
addr, tel string //也可以写到一行
}
var u user //实例化结构体到变量u
u.name = "张三" //给各个字段/成员变量赋值
u.age = 30
u.tel = "0931-6666666"
u.addr = "甘肃省兰州市"
fmt.Println(u)
}
运行结果:
2.2 new关键字实例化
语法: 实例化变量名 := new(结构体名)
通过该方法实例化后,实例属于指针类型结构体
例:
package main
import (
"fmt"
)
func main() {
type user struct {
name string
age int
addr, tel string //也可以写到一行
}
u := new(user)
u.name = "张三"
u.age = 30
u.tel = "0931-6666666"
u.addr = "甘肃省兰州市"
fmt.Println(u)
}
运行结果:
2.3 取结构体的地址实例化
例:
package main
import (
"fmt"
)
func main() {
type user struct {
name string
age *int
addr, tel string //也可以写到一行
}
nianling := 30
u := &user{
} //对结构体取地址实例化
u.name = "张三"
u.age = &nianling
u.tel = "0931-6666666"
u.addr = "甘肃省兰州市"
fmt.Println(u)
}
运行结果:
3、初始化匿名结构体
匿名结构体没有类型名称,无须通过type关键字定义就可以直接使用。
匿名结构体定义格式和初始化写法:
- 匿名结构体的初始化写法由结构体定义和键值对初始化两部分组成。
- 结构体定义时没有结构体类型名,只有字段和类型定义。
- 键值对初始化部分由可选的多个键值对组成。
例:
package main
import (
"fmt"
)
func main() {
var u struct {
name string
age int
}
u.age = 30
u.name = "张三"
fmt.Println(u)
}
边栏推荐
猜你喜欢
随机推荐
flink on yarn指定第三方jar包
ISCC2021——web部分
视图、存储过程、触发器
ES6 Const Let Var的区别
js 基础学习笔记
计算属性的作用及使用?
scrapy 爬取当当图书名字图片
sklearn中的pipeline机制
多项式回归(PolynomialFeatures)
sklearn中的学习曲线learning_curve函数
(十一)树--堆排序
MySql--存储引擎以及索引
跨域问题的解决
CTFshow—Web入门—信息(9-20)
个人练习三剑客基础之模仿CSDN首页
剑指 Offer 2022/7/8
自动化运维工具Ansible(5)流程控制
完美解决keyby造成的数据倾斜导致吞吐量降低的问题
IP地址查询
跳转页面实时调用后台接口,更新页面数据









