Golang 匿名字段

// code by shaoyongyang
package main

import (
    "fmt"
)

type People struct {
    name   string
    age    int
    weight int
}

type Student struct {
    People
    specialty string
}

func main() {
    liming := Student{People{"liming", 18, 183}, "None Specialty"}
    fmt.Println(liming.name)
    liming.People.name = "xiaohong"
    fmt.Println(liming.name)
}

其实就是一个结构体,嵌入了另一个结构体。 对应的修改数据方式方式,以及数据访问的方式跟着改变。

时间: 2024-10-15 10:25:22

Golang 匿名字段的相关文章

Go中的"继承"之struct的匿名字段

// code_016_anonymous_field project main.go package main import ( "fmt" ) type Person struct { name string sex byte age int } type Student struct { // 一般情况下,定义结构体的时候,字段名和类型一一对应,如下:Person为类型,并无字段名. Person //匿名字段,name默认Student就包含了Person的所有字段. id i

Go中匿名字段的方法继承与方法重写

// code_019_struct_anonymous_field_method project main.go package main import ( "fmt" ) type Person struct { name string sex byte age int } func (p *Person) PrintInfo() { fmt.Printf("Person:%s,%c,%d\n", p.name, p.sex, p.age) } type Stu

32_匿名字段的使用

匿名字段相当于c语言里面的继承,即在结构体中继承父结构体,只需要写父结构体的结构体名字,不写结构体的类型 实例如下: package main import "fmt" //定义一个结构体,存储学生信息 //要想被不同的包调用结构体,则结构体的名字首字母要大些,里面的变量名也要大写 type Student struct { //和变量定义不同,不要写var关键字 Id int Name string Sex byte Age int Addr string } type Person

golang匿名变量

package main import "fmt" //golang匿名变量特点是一个下划线"_",称为空白标识符,可以用于声明变量或者赋值 func GetUserInfo()(int,string){ UserName := "roddy" UserAge := 27 return UserAge,UserName } func main(){ _, name := GetUserInfo() age, _ := GetUserInfo()

[GO]匿名字段的同名字段操作

package main import ( "fmt" ) type Person struct { name string sex byte age int } type Student struct { Person //只有名字,没有字段,这里student相当于继承了person的所有字段,就有点像是继承了 id int addr string name string //这里跟person里的字段同名了,那么被使用的时候,操作是studnet还是persion里的name ?

37_匿名字段方法的继承

package main import "fmt" type Person struct { //和变量定义不同,不要写var关键字 Id int Name string Sex byte } type Student struct { Person Hobby string } func (s Person) PrintValue() { fmt.Println("该方法receiver is person") } func (s *Person) Printpo

Go编程——变量、函数导出与首字母大写

Go编程--变量.函数导出与首字母大写 标识符可被 导出 以允许从另一个包访问. 同时符合以下条件即为已导出标识 1.标识符名的第一个字符为Unicode大写字母(Unicode类别"Lu"): 2.该标识符在包块中已声明或为字段名或方法名. 以程序导入gotest/even包为例 package main import ( "even" "fmt" ) func main() { i:=even.I fmt.Printf("Is %d

golang 结构体中的匿名接口

golang 结构体中的匿名接口 代码示例 golang 中,可以给结构体增加匿名field,可参考 unknwon 大神的书. 匿名字段和内嵌结构体 但,golang同时也可以给结构体定义一个匿名interface field,用法: 标准库 sort 中,有下面的写法: type Interface interface { Len() int Less(i, j int) bool Swap(i, j int) } type reverse struct { Interface } func

golang 方法

golang语言中的方法是与对象实例绑定的特殊函数,用于维护和展示对象的自身状态. 与函数的区别是方法有前置实例接收参数(receiver),编译器根据receiver来判断该方法属于哪个实例.receiver可以是基础类型,也可以是指针类型,这会关系到是否需要有可以修改对象实例的能力. 在调用方法时,可以使用对象实例值或指针,编译器会根据receiver类型自动在基础类型和指针类型之间转换,比如: type rect struct {     width, height, area int }