首页 > 其他分享 >interface理解

interface理解

时间:2023-08-13 22:33:39浏览次数:32  
标签:student 接口 person 理解 Student 类型 interface

interface(接口)是golang最重要的特性之一,实现多态。Interface类型可以定义一组方法,但是这些不需要实现。并且interface不能包含任何变量。

特点

  • interface 是方法或行为声明的集合
  • interface接口方式实现比较隐性,任何类型的对象实现interface所包含的全部方法,则表明该类型实现了该接口。
  • interface还可以作为一中通用的类型,其他类型变量可以给interface声明的变量赋值。
  • interface 可以作为一种数据类型,实现了该接口的任何对象都可以给对应的接口类型变量赋值。

两种接口

​runtime.iface

package main

import "fmt"

// Person 定义接口
type Person interface {
    GetName() string
    GetAge() uint32
}

// Student 定义类型
type Student struct {
    Name string
    Age uint32
}

func (s Student) GetName()  string{
    return s.Name
}
func (s Student) GetAge()  uint32{
    return s.Age
}

func main() {

var student Student
    student.Age = 12
    student.Name = "小明"

var person Person
    person = student  //接口执行向student
    fmt.Printf("name:%s,age: %d\n", person.GetName(), person.GetAge())
}

​内部结构

runtime.eface​

使用​​runtime.eface​​​表示第二种不包含任何方法的接口,第二种在我们日常开发中经常使用到,所以在实现时使用了特殊的类型。从编译角度来看,golang并不支持泛型编程。但还是可以用​​interface{}​​ 来替换参数,而实现泛型。

 

参考

来源:

https://blog.51cto.com/u_14523732/5639864

https://blog.csdn.net/yuqiang870/article/details/124746693

标签:student,接口,person,理解,Student,类型,interface
From: https://www.cnblogs.com/LQBlog/p/17627414.html

相关文章

  • 《深入理解Java虚拟机》读书笔记:内存分配策略
    Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存以及回收分配给对象的内存。关于回收内存这一点,我们已经使用了大量篇幅去介绍虚拟机中的垃圾收集器体系以及运作原理,现在我们再一起来探讨一下给对象分配内存的那点事儿。对象的内......
  • 理解 Java 方法调用
    总结自:《Java核心技术第10版(套装共2册)-凯S.霍斯特曼霍斯特曼科内尔》下面假设要调用x.f(args),隐式参数x[1]声明为类C的一个引用。下面是调用过程的详细描述:1)编译器查看对象的声明类型和方法名。假设调用x.f(param),且隐式参数x声明为C类的对象。需要注意的是......
  • 深入理解JavaScript正则表达式:释放其强大力量
    深入理解JavaScript正则表达式:释放其强大力量正则表达式是一种强大的工具,用于在字符串中搜索、匹配和替换特定的模式。在JavaScript中,正则表达式是一种内置的功能,可以帮助开发人员处理各种字符串操作。本文将深入探讨JavaScript正则表达式的原理、语法和应用场景,帮助读者充分理解......
  • 深入理解 Spring Bean 的生命周期与初始化过程
    SpringFramework是一个广泛使用的开发框架,它提供了强大的依赖注入和控制反转功能,同时也涉及了丰富的Bean生命周期管理。在本篇博客中,我们将深入探讨SpringBean的生命周期以及初始化过程,并通过代码示例演示每个阶段的实际调用。1.Bean生命周期阶段SpringBean的生命周期可......
  • FunctionalInterface解析
    FunctionalInterface注解FunctionalInterface`是Java8新增的一个注解,使用`FunctionalInterface`注解的接口被称为`函数式接口@FunctionalInterface`注解的作用是告知编译器进行检查,可加可不加,但是如果加上了,那么接口必须为`函数式接口特点从FunctionalInterface的Doc注释可知,......
  • 《深入理解Java虚拟机》读书笔记:垃圾收集器
    垃圾收集器 HotSpot虚拟机包含的所有收集器如图3-5所示。图3-5展示了7种作用于不同分代的收集器,如果两个收集器之间存在连线,就说明它们可以搭配使用。新生代收集器:Serial、ParNew、ParallelScavenge,新生代收集器均采用复制算法老年代收集器:SerialOld(标记-整理算法)、Paral......
  • 通俗理解OSI七层模型
    OSI七层模型国际标准化组织(InternationalStandardOrganization,ISO)于1984年颁布了开放系统互连(OpenSystemInterconnection,OSI)参考模型OSI参考模型是一个开放式体系结构,它规定将网络分为七层,从下往上依次是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层ISO制订的......
  • 从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码
    理解图优化,一步步带你看懂g2o框架小白:师兄师兄,最近我在看SLAM的优化算法,有种方法叫“图优化”,以前学习算法的时候还有一个优化方法叫“凸优化”,这两个不是一个东西吧?师兄:哈哈,这个问题有意思,虽然它们中文发音一样,但是意思差别大着呢!我们来看看英文表达吧,图优化的英文是graphoptimi......
  • Anyline+PostgeSQL使用理解之二
    第一篇:springboot+postgresql集成anyline试水总结几个目前遇到的比较简单的使用场景,以后可能会继续在此更新。下文anylineService皆为org.anyline.service.AnylineService。查询基本列表查询DataSetds=anylineService.querys(TABLE_NAME+"(id,row,col,start_time,senso......
  • JAVA 内存详解 (理解 JVM 如何使用 Windows 和 Linux 上的本机内存)
    级别:中级AndrewHall ,软件工程师,IBM2009年5月11日Java™堆耗尽并不是造成 java.lang.OutOfMemoryError 的惟一原因。如果本机内存 耗尽,则会发生普通调试技巧无法解决的 OutOfMemoryError 。本文将讨论本机内存的概念,Java运行时如何使用它,它被耗......