当前位置:网站首页>[Go language entry notes] 13. Structure (struct)
[Go language entry notes] 13. Structure (struct)
2022-08-04 06:05:00 【Live up to [email protected]】
提示:Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念.
Go语言的结构体与“类”都是复合结构体,但Go语言中结构体的内嵌配合接口比面向对象具有更高的扩展性和灵活性.
Go语言不仅认为结构体能拥有方法,且每种自定义类型也可以拥有自己的方法.
结构体(struct) 是GoLanguage by自定义The way to form a new type,Structure is a type of成员的复合类型.
对象思维:结构体和结构体成员,来描述真实世界的实体和实体对应的各种属性.
结构体成员:由一系列的成员变量构成,这些成员变量也被称为“字段”.
字段有以下特性:
- 字段拥有自己的类型和值.
- 字段名必须唯一.
- 字段的类型也可以是结构体,甚至是字段所在结构体的类型.
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 //Instantiate the structure to the variableu
u.name = "张三" //For each field/成员变量赋值
u.age = 30
u.tel = "0931-6666666"
u.addr = "甘肃省兰州市"
fmt.Println(u)
}
运行结果:
2.2 new关键字实例化
语法: 实例化变量名 := new(结构体名)
By this method is instantiated,实例属于指针类型结构体
例:
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)
}
版权声明
本文为[Live up to [email protected]]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/216/202208040525327283.html
边栏推荐
- SQL练习 2022/7/2
- sklearn中的学习曲线learning_curve函数
- 剑指 Offer 2022/7/1
- SQL练习 2022/7/3
- (TensorFlow)——tf.variable_scope和tf.name_scope详解
- npm install dependency error npm ERR! code ENOTFOUNDnpm ERR! syscall getaddrinfonpm ERR! errno ENOTFOUND
- 剑指 Offer 2022/7/4
- 安卓连接mysql数据库,使用okhttp
- (十六)图的基本操作---两种遍历
- flink-sql所有表格式format
猜你喜欢
随机推荐
[Deep Learning 21 Days Learning Challenge] 1. My handwriting was successfully recognized by the model - CNN implements mnist handwritten digit recognition model study notes
线性回归02---波士顿房价预测
SQL练习 2022/6/30
二月、三月校招面试复盘总结(一)
对象存储-分布式文件系统-MinIO-1:概念
自动化运维工具Ansible(5)流程控制
(十)树的基础部分(一)
sklearn中的学习曲线learning_curve函数
智能合约安全——溢出漏洞
TensorFlow2学习笔记:5、常用激活函数
组原模拟题
【树 图 科 技 头 条】2022年6月27日 星期一 今年ETH2.0无望
Kubernetes基本入门-名称空间资源(三)
[Introduction to go language] 12. Pointer
MySQL最左前缀原则【我看懂了hh】
(十六)图的基本操作---两种遍历
flink on yarn任务迁移
属性动画的用法 以及ButterKnife的用法
(十一)树--堆排序
【深度学习21天学习挑战赛】0、搭建学习环境








