前言:
当前你们对“结构体对象的定义及引用”大体比较讲究,姐妹们都想要剖析一些“结构体对象的定义及引用”的相关资讯。那么小编在网摘上汇集了一些有关“结构体对象的定义及引用””的相关内容,希望看官们能喜欢,兄弟们快快来学习一下吧!面向对象的引入
【1】Golang语言面向对象编程说明:
(1)Golang也支持面向对象编程(OOP),但是和传统的面向对象编程有区别,并不是纯粹的面向对象语言。所以我们说Golang支持面向对象编程特性是比较准确的。
(2)Golang没有类(class),Go语言的结构体(struct)和其它编程语言的类(class)有同等的地位,你可以理解Gelang是基于struct来实现OOP特性的。
(3)Golang面向对象编程非常简洁,去掉了传统OOP语言的方法重载、构造函数和析构函数、隐藏的this指针等等
(4)Golang仍然有面向对象编程的继承,封装和多态的特性,只是实现的方式和其它OOP语言不一样,比如继承:Golang没有extends 关键字,继承是通过匿名字段来实现。
【2】结构体的引入:
具体的对象:
一位老师:珊珊老师: 姓名:赵珊珊 年龄:31岁 性别 :女 ......
可以使用变量来处理:
package mainimport "fmt"func main(){ var name string = "赵珊珊" var age int = 31 var sex string = "女" fmt.Printf("name: %v,age: %v,sex: %v \n",name,age,sex) var name1 string = "马士兵" var age1 int = 45 var sex1 string = "男" fmt.Printf("name1: %v,age1: %v,sex1: %v \n",name1,age1,sex1)}
缺点:
(1)不利于数据的管理、维护
(2)老师的很多属性属于一个对象,用变量管理太分散了
结构体
【1】结构体、结构体对象的引入:
案例:老师结构体
后续实践中按照自己的需求定义结构体即可
【2】代码:
package mainimport "fmt"//定义老师结构体,将老师中的各个属性 统一放入结构体中管理:type Teacher struct{ Name string Age int School string}func main() { //创建老师结构体的实例、对象、变量: var t1 Teacher fmt.Println(t1) t1.Name = "马士兵" t1.Age = 45 t1.School = "北京清华大学" fmt.Println(t1) fmt.Println(t1.Age + 10)}内存分析
结构体实例创建方式
【1】方式1:直接创建:
【2】方式2:
// 方式2 var t2 Teacher = Teacher{"赵珊珊",31,"黑龙江大学"} fmt.Println(t2)
【3】方式3:返回的是结构体指针:
// 方式3 var t3 *Teacher = new(Teacher) // t是指针,t其实指向的就是地址,应该给这个地址的指向的对象的字段赋值 (*t3).Name = "菜园子" // *的作用:根据地址取值 (*t3).Age = 31 // 为了符合程序员的编程习惯,go提供了简化的赋值方式: t3.School ="德州学院" //go编译器底层对t.School转化 (*t).School = "德州学院" fmt.Println(*t3)
【4】方式4:返回的是结构体指针:
// 方式4 var t4 *Teacher = &Teacher{"高启强",45,"社会大学"} fmt.Println(*t4)结构体之间的转换
【1】结构体是用户单独定义的类型,和其它类型进行转换时需要有完全相同的字段(名字、个数和类型)
package mainimport "fmt"type Student struct { Age int}type Person struct { Age int}func main() { var s Student = Student{10} var p Person = Person{20} fmt.Println(s) fmt.Println(p) s = Student(p) fmt.Println(s) fmt.Println(p)}
【2】结构体进行type重新定义(相当于取别名),Golang认为是新的数据类型,但是相互间可以强转
package mainimport "fmt"type Student struct { Age int}type Stu Studentfunc main() { var s1 Student = Student{10} var s2 Stu = Stu{20} fmt.Println(s1) fmt.Println(s2) s1 = Student(s2) fmt.Println(s1) fmt.Println(s2)}
参考源码:「链接」
参考个人博客:cyz
标签: #结构体对象的定义及引用 #结构体对象的定义及引用方式