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) Printpointer() {
	s.Name = "st"
	fmt.Println("该方法receiver is *person")

}
func main() {
	s1 := Student{Person{1, "steven", ‘m‘}, "running"}
	s1.PrintValue() //继承person的方法
     s1.Printpointer()//自动转换类型

	var s2 *Student
	s2 = new(Student)
	s2.Printpointer()
	fmt.Println(s2.Name)//st

}


原文地址:https://www.cnblogs.com/zhaopp/p/11565398.html

时间: 2024-08-03 02:13:00

37_匿名字段方法的继承的相关文章

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

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

.NET面试题解析(04)-类型、方法与继承

  系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 做技术是清苦的.一个人,一台机器,相对无言,代码纷飞,bug无情.须梦里挑灯,冥思苦想,肝血暗耗,板凳坐穿.世界繁华竞逐,而你独钓寒江,看尽千山暮雪,听彻寒更雨歇.——来自<技术人的慰藉> 常见面试题目: 1. 所有类型都继承System.Object吗? 2. 解释virtual.sealed.override和abstract的区别 3. 接口和类有什么异同? 4. 抽象类和接口有什么区别?使用时

JS中通过call方法实现继承

讲解都写在注释里面了,有不对的地方请拍砖,谢谢! <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>JS通过call方法实现继承</title> </head> <body> <script type="text/javascript"> /* js中的继承有多种实现方式,今天我们讨论下通过call方法实现的继承. 此

[二] java8 函数式接口详解 函数接口详解 lambda表达式 匿名函数 方法引用使用含义 函数式接口实例 如何定义函数式接口

函数式接口详细定义 package java.lang; import java.lang.annotation.*; /** * An informative annotation type used to indicate that an interface * type declaration is intended to be a <i>functional interface</i> as * defined by the Java Language Specificat

32_匿名字段的使用

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

实现多线程的两种方法:继承Thread类或实现Runnable接口

实现多线程的两种方法:继承Thread类或实现Runnable接口 Java中实现多线程有两种方法:继承Thread类和实现Runnable接口,在程序开发中只要是多线程,我们一般都是实现Runnable接口,原因归结为一点:实现接口比继承类要好. 多线程的第一种实现方式:继承Thread类 步骤如下 创建一个继承Thread的类(假定为A),并重写Thread的run方法 构造一个A类对象,假定为aa 调用aa的start方法.(start方法是从Thread继承过来的) 具体例子如下 pac

oc38--类工厂方法在继承中

// Person.h #import <Foundation/Foundation.h> @interface Person : NSObject @property int age; /* 什么是类工厂方法: 用于快速创建对象的类方法, 我们称之为类工厂方法 类工厂方法中主要用于 给对象分配存储空间和初始化这块存储空间 规范: 1.一定是类方法 + 2.方法名称以类的名称开头, 首字母小写 3.一定有返回值, 返回值是id/instancetype */ + (instancetype)p

Visual Studio快速封装字段方法

在面向对象的编程中我们常常要将各个字段封装为属性,但是当字段多的时候往往这个重复的操作会大大降低我们的开发效率,那么如何才能快速的封装字段呢?下面就给大家2个解决方法: 1.使用封装字段方法: 选中字段--点击右键--重构--再选择封装字段,就OK了 2.使用propfull代码段: 输入propfull,按2次Tab按键,输入数据类型--按一次Tab--设置字段名--按一次Tab--设置属性名,就OK了