当前位置:网站首页>[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
边栏推荐
- Dictionary feature extraction, text feature extraction.
- 剑指 Offer 2022/7/5
- Polynomial Regression (PolynomialFeatures)
- npm install dependency error npm ERR! code ENOTFOUNDnpm ERR! syscall getaddrinfonpm ERR! errno ENOTFOUND
- 剑指 Offer 2022/7/4
- TensorFlow2学习笔记:7、优化器
- 超详细MySQL总结
- Usage of RecyclerView
- 【深度学习21天学习挑战赛】3、使用自制数据集——卷积神经网络(CNN)天气识别
- Kubernetes基本入门-集群资源(二)
猜你喜欢
随机推荐
Simple and clear, the three paradigms of database design
RecyclerView的用法
PHP课堂笔记(一)
智能合约安全——delegatecall (1)
Th in thymeleaf: href use notes
PostgreSQL模式(Schema)
SQL练习 2022/7/4
yolov3中数据读入(一)
Kubernetes基本入门-集群资源(二)
记一次flink程序优化
【树 图 科 技 头 条】2022年6月28日 星期二 伊能静做客树图社区
完美解决keyby造成的数据倾斜导致吞吐量降低的问题
8.30难题留坑:计数器问题和素数等差数列问题
超详细MySQL总结
sklearn中的学习曲线learning_curve函数
(十五)B-Tree树(B-树)与B+树
VScode配置PHP环境
flink onTimer定时器实现定时需求
The pipeline mechanism in sklearn
pgsql函数中的return类型