首页 > 其他分享 >Go语言接口类型的合理使用

Go语言接口类型的合理使用

时间:2022-12-21 14:35:03浏览次数:39  
标签:语言 pet dog 类型 接口类型 Go Pet 动态 变量

dog := Dog{"little pig"}
var pet Pet = &dog

我们声明并初始化一个Dog类型的变量dog,然后它的指针赋给类型为Pet的变量pet

对于一个接口类型的变量来讲, 如上面的变量pet,我们赋给它的值可以被叫做它的实际值(也称之为动态值),而该值的类型可以被叫做这个变量的实际类型(也成为动态类型)

比如上面我们将取址表达式&dog的结果值赋值给了变量pet,这个时候表达式的结果值就是变量pet的动态值,而此结果值的类型*dog就是这个变量的动态类型。

动态类型是相对静态类型来讲的,对于变量pet来讲, 它的静态类型就是pet, 并且永远是Pet, 但是它的动态类型确会随着我们赋给它的动态值而变化

比如, 只有我把一个*Dog类型的值赋给变量pet之后, 该变量的动态类型才会是*Dog, 如果还有一个Pet接口的实现类型*Flsh,并且我又把一个此类型的值赋值给了pet, 那么它的动态类型就变成了*Fish

标签:语言,pet,dog,类型,接口类型,Go,Pet,动态,变量
From: https://www.cnblogs.com/zhengel/p/16996193.html

相关文章

  • 微服务-环形熔断器设计与gobreaker源码分析
    环形熔断器本文主要是阅读微软在早些年前发表的环形熔断器的设计的文章,CircuitBreakerPattern。该文比较详细的介绍了环形熔断器设计的背景,及解决的问题。环形熔断器设......
  • Java实现多种语言编译运行
    Java实现多种语言编译运行摘要:在Java开发过程中,经常会遇到使用Java实现某一个功能比其他语言要复杂,因此通常将该功能使用其他编程语言来完成后,再通过Java调用编译程序编译运......
  • Go/Python 基于gRPC传输图片
    python程序作为服务端,Go程序作为客户端,基于gPRC进行通信客户端定义proto文件:syntax="proto3";optiongo_package=".;transfer";serviceGreeter{rpcSendI......
  • 链路追踪-Google-Dapper论文翻译总结
    ​一、两个基本需求无处不在的部署:无处不在很重要,如果系统的一小部分没有被监视,就会受到影响连续监测:因为通常情况下,不寻常或其他值得注意的系统行为很难或不可能重现最......
  • 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-JWT和中间件(Middlewar
    前文再续,上一回我们完成了用户的登录逻辑,将之前用户管理模块中添加的用户账号进行账号和密码的校验,过程中使用图形验证码强制进行人机交互,防止账号的密码被暴力破解。本回......
  • 深入理解Java核心技术:写给Java工程师的干货笔记(基础篇)张洪亮著编程语言专业科技电子工
    深入理解Java核心技术:写给Java工程师的干货笔记(基础篇)张洪亮著编程语言专业科技电子工业出版   ......
  • NoSQL 数据库案例实战 --MongoDB 数据库 用户管理
    MongoDB数据库用户管理​​前言​​​​一、创建用户​​​​二、登录数据库​​前言本环境是基于Centos7.8系统构建mongodb-enterprise-4.2.8学习环境具体构建,请参考......
  • django8
    Q查询进阶操作fromdjango.db.modelsimportQq_obj=Q()#1.产生q对象q_obj.connector='or'#默认多个条件的连接是and可以修改为orq_obj.children.append(('......
  • MongoDB联表查询
    原文:https://www.cnblogs.com/-abm/p/10390543.html表A:123456idname---------------------------1Tom2Roger3Mars4Brent表B:12......
  • Django
    Basics安装安装及查看Django版本。pipinstalldjangopython-mdjango--version创建项目在目标文件夹下执行:(需要将python/script加入环境变量)django-adminstart......