热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

golang-interface接口学习笔记

接口interface基本typeUSBinterface{Name()stringConnect()}typePhoneConnectorstruct{

接口interface

  1. 基本
type USB interface {
Name() string
Connect()
}

type PhoneConnector struct {
name string
}

func (pc PhoneConnector)Name()string {
return pc.name
}

func (pc PhoneConnector)Connect(){
fmt.Println("Connected:",pc.name)
}

func main() {
a := PhoneConnector{"PhoneConnector"}
a.Connect()
Disconnect(a)
}

func Disconnect(usb USB){
// fmt.Println("Disconnected",usb.Name()) 一种办法

//第二种办法,类型判断
if pc, ok := usb.(PhoneConnector); ok {
fmt.Println("Disconnected", pc.name)
return
}

// type switch方法来判断类型
switch v := usb.(type) {
case PhoneConnector:
fmt.Println("Disconnected", v.name)
default:
fmt.Println("Unknown device")
}
}
  1. 嵌入接口
type Connector interface {
Connect()
}

type USB interface {
Name() string
Connector
}

type PhoneConnector struct {
name string
}

func (pc PhoneConnector)Name()string {
return pc.name
}

func (pc PhoneConnector)Connect(){
fmt.Println("Connected:",pc.name)
}

func main() {
a := PhoneConnector{"PhoneConnector"}
a.Connect()
Disconnect(a)
}

func Disconnect(usb USB){
fmt.Println("Disconnected",usb.Name())
}

推荐阅读
  • 认真一点学 Go:18. 并发
    收录于《Go基础系列》,作者:潇洒哥老苗。>>原文链接学到什么并发与并行的区别?什么是Goroutine?什么是通道?Goroutine如何通信?相关函数的使用?sel ... [详细]
  • 集成第三方库,自检测读取配置文件。文件读取,结构体定义,接口实现,错误返回,库解析,适合新同学练手。思路文件读取获取字节流文件类型分析,确定解析api集成第三方解析api管理器定义 ... [详细]
  • 遇到的问题golang对于基本类型初始化的处理,是自动给基本类型赋值为默认值。比如:variint在这里如果不对i做任何赋值,那么i的值为零这个特性在很多地方能够避免访问到未初始化 ... [详细]
  • IPVlan 详解
    文章目录简介Ipvlan2同节点Ns互通Ns内与宿主机通信第三种方法Ns到节点外部结论Ipvlan31.同节点Ns互通Ns内与宿主机通信Ns内到外部网络总结源码分析ipvlan收包 ... [详细]
  • 接上文http:blog.itpub.net29254281viewspace-1318239领导让开发同学鼓捣一个可配置化的后台.又回到了原来的问题如果要灵活,很多参数要 ... [详细]
  • 883.三维形体投影面积
    题目883.三维形体投影面积题目大意在nxn的网格grid中,我们放置了一些与x,y,z三轴对齐的1x1x1立方体。每个值vgri ... [详细]
  • STM32 IO口模拟串口通讯
    转自:http:ziye334.blog.163.comblogstatic224306191201452833850647前阵子,调项目时需要用到低波 ... [详细]
  • 千万不要错过的后端[纯干货]面试知识点整理 I I
    千万不要错过的后端【纯干货】面试知识点整理IIc++内存管理上次分享整理的面试知识点I,今天我们来继续分享面试知识点整理IIlinuxkernel内核空间、内存管理、进程管理设备、 ... [详细]
  • golang 解析磁力链为 torrent 相关的信息
    其实通过http请求已经获得了种子的信息了,但是传播存储种子好像是违法的,所以就存储些描述信息吧。之前python跑的太慢了。这个go并发不知道写的有没有问题?!packag ... [详细]
  • 本文主要分享【go协程模型】,技术文章【【GORM】模型关系-HasOne】为【VivaPython】投稿,如果你遇到GoWeb相关问题,本文相关知识或能到你。go协程模型一、概述HasO ... [详细]
  • 看到平台银行对接方案写的demo确实还不错记个笔记互相学习学习packageapiimport(cryptotlsnetnethttpstringssynct ... [详细]
  • Go 快速入门指南命令行参数
    命令行参数个数调用os包即可。获取参数个数,遍历参数packagemainimport(fmtos)funcmain(){fmt.Printf(Numberofargsi ... [详细]
  • Channel是Go中的一个核心类型,你可以把它看成一个管道,通过它并发核心单元就可以发送或者接收数据进行通讯(communication)。类型T表示任意的一种类型双向:chan ... [详细]
  • GO成神之路:接口interface|Go主题月-接口interface接口是一组方法签名,所有实现了该签名的子类都可以赋值给这个接口变量。go中有两种接口的使用场景:1.用作 ... [详细]
  • 由于工作需要,接手别人用bpel写的工作流程序,一点都不懂就到网上找到一篇入门的文章,觉得这篇不错,就copy下来并添加了读书笔计以红字标记,感激写此文章的人.许多开发人员觉得BPEL很神秘,不知道 ... [详细]
author-avatar
星夜幂语_525
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有