go语言学习笔记18------面向对象①

1:匿名字段

1.1匿名字段创建与初始化

package main

import "fmt"

type person struct {
   id int
   name string
   age int
}
type student struct {
   person  //匿名字段
   score float64
}
func main() {
   var a student=student{person{1,"lili",25},98}
   fmt.Println(a)
}
输出结果
{{1 lili 25} 98}

初始化方式如下:
1)自动推导类型
2)指定初始化成员

1.2同名字段

package main

import "fmt"

type person struct {
   id int
   name string
   age int
}
type student struct {
   person
   name string  //同名字段
   score float64
}
func main() {
   var a student=student{person{1,"lili",25},"bob",88}
   fmt.Println(a.name)
   fmt.Println(a.person.name)
}
//输出结果
//bob
//lili

1.3指针类型匿名字段

package main

import "fmt"

type person struct {
   id int
   name string
   age int
}
type student struct {
   *person  //匿名字段
   score float64
}
func main() {
   var a student=student{&person{1,"lili",25},98}
   fmt.Println(a)
   fmt.Println(a.name,a.id,a.age,a.score)
}
输出结果
{0xc0420023e0 98}
lili 1 25 98

另一种初始化方式

package main

import "fmt"

type person struct {
   id int
   name string
   age int
}
type student struct {
   *person  //匿名字段
   score float64
}
func main() {
   var a student
   a.person=new(person)
   a.id=1
   a.name="lili"
   a.age=19
   a.score=99
   fmt.Println(a)
   fmt.Println(a.name,a.id,a.age,a.score)
}
//输出结果
//{0xc0420023e0 99}
//lili 1 19 99

此处注意需要用new分配空间,new( )的作用是分配空间,new( )函数的参数是一个类型,这里为Person结构体类型,返回值为指针类型,所以赋值给*Person,这样*Person也就指向了结构体Person的内存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值