首页 > 其他分享 >Golang中接口和结构体之间转换的方法

Golang中接口和结构体之间转换的方法

时间:2024-10-15 11:00:05浏览次数:7  
标签:转换 name Show fmt MyStruct 接口 Golang type

目录


在Golang中,接口和结构体之间的转换涉及到类型断言类型断言的操作符

接口转结构体

如果我们有一个接口变量,并且我们知道它的内部具体类型,我们可以使用类型断言来将其转换为该具体类型的结构体

package main
 
import (
    "fmt"
)
 
type MyInterface interface {
    Show()
}
 
type MyStruct struct {
    name string
}
 
func (m MyStruct) Show() {
    fmt.Println(m.name)
}
 
func main() {
    var a MyInterface
    a = MyStruct{name: "John"}
    b := a.(MyStruct)
    b.Show()
}

结构体转接口

在Golang中,任何类型T的非空值都满足接口类型T,所以可以直接将结构体类型值赋值给接口类型变量

package main
 
import (
    "fmt"
)
 
type MyInterface interface {
    Show()
}
 
type MyStruct struct {
    name string
}
 
func (m MyStruct) Show() {
    fmt.Println(m.name)
}
 
func main() {
    var a MyInterface
    a = MyStruct{name: "John"}
    a.Show()
}

使用ok-idiom进行安全的类型断言

如果我们不确定接口变量的内部类型是否为我们想要的类型,我们可以使用ok-idiom来安全地执行类型断言

package main
 
import (
    "fmt"
)
 
type MyInterface interface {
    Show()
}
 
type MyStruct struct {
    name string
}
 
func (m MyStruct) Show() {
    fmt.Println(m.name)
}
 
func main() {
    var a MyInterface
    a = MyStruct{name: "John"}
    if b, ok := a.(MyStruct); ok {
        b.Show()
    } else {
        fmt.Println("Not MyStruct type")
    }
}

标签:转换,name,Show,fmt,MyStruct,接口,Golang,type
From: https://www.cnblogs.com/yubo-guan/p/18467017

相关文章

  • 淘宝商品详情API接口信息获取指南
    淘宝商品详情API接口,作为我国电商巨头淘宝开放平台的重要组成部分,为广大开发者提供了一种便捷、高效的方式,以获取淘宝商品详细信息。该接口的推出,不仅满足了开发者对商品数据的需求,也为消费者带来了更加丰富的购物体验。一、淘宝商品详情API接口具有以下特点:数据丰富:该接口......
  • 淘宝商品关键词API接口:关键词数据智能分析
    淘宝商品关键词API接口是淘宝开放平台(TaobaoOpenPlatform,TOP)提供的一项服务,它允许第三方开发者通过编程方式访问淘宝的商品信息数据库。这个接口的主要功能是根据开发者提供的关键词,检索淘宝平台上的商品列表及相关信息。一、功能和特点数据检索:可以检索特定关键词下的......
  • VU9P处理板设计原理图:412-基于单XCVU9P+双DSP C6678的双FMC接口 100G光纤传输加速计算
    基于单XCVU9P+双DSPC6678的双FMC接口100G光纤传输加速计算卡一、板卡概述板卡包括一片Xilinx FPGA  XCVU9P,两片 TI 多核DSP TMS320C6678及其控制管理芯片CFPGA.设计芯片满足工业级要求。FPGA VU9P 需要外接4路QSFP+(100Gbps)及其两个FMC HPC接口。DS......
  • 用python、JavaScript、JAVA等多种语言的实例代码演示教你如何免费获取股票数据(实时数
    ​近一两年来,股票量化分析逐渐受到广泛关注。而作为这一领域的初学者,首先需要面对的挑战就是如何获取全面且准确的股票数据。因为无论是实时交易数据、历史交易记录、财务数据还是基本面信息,这些数据都是我们进行量化分析时不可或缺的宝贵资源。我们的核心任务是从这些数据......
  • 苍穹外卖 实现新增菜品及其口味接口
        DishControllerpackagecom.sky.controller.admin;importcom.sky.dto.DishDTO;importcom.sky.result.Result;importcom.sky.service.DishService;importio.swagger.annotations.Api;importio.swagger.annotations.ApiOperation;importlombok.extern.......
  • Spring 实现 3 种异步流式接口,干掉接口超时烦恼
    大家好,我是小富~如何处理比较耗时的接口?这题我熟,直接上异步接口,使用Callable、WebAsyncTask和DeferredResult、CompletableFuture等均可实现。但这些方法有局限性,处理结果仅返回单个值。在某些场景下,如果需要接口异步处理的同时,还持续不断地向客户端响应处理结果,这些方法就不......
  • 代码江湖:快问快答 -【Golang】
    Golang筑基期1.Go语言的应用场景和优势有哪些?2.Go的数据类型有哪些?如何声明变量?3.如何定义和使用函数?支持哪些参数和返回值类型?4.什么是数组和切片?它们之间有什么区别?5.Go中的map是什么?如何创建和使用map?6.如何使用控制结构(if、for、switch)进行流程控制?7.什......
  • Python 实现Excel XLS和XLSX格式相互转换
    在日常工作中,我们经常需要处理和转换不同格式的Excel文件,以适应不同的需求和软件兼容性。Excel文件的两种常见格式是XLS(Excel97-2003)和XLSX(Excel2007及以上版本)。本文将详细介绍如何使用Python在XLS和XLSX格式之间进行转换。Python库安装所需Python库-Spire.XLSforPython......
  • django实现sse接口
    基于django来实现sse最近在实现通过post调用三方的接口得到sse流数据,并且自己需要用拿到的数据用sse流在返回给前端fromrest_framework.viewsimportAPIViewfromdjango.httpimportStreamingHttpResponse,JsonResponseclassChatMessageViewSet(APIView):defpost......
  • 如何使用接口查询A股上市公司股价
    importtimeimportrequestsimportjson#Extraheaderstest_headers={'Content-Type':'application/json'}'''#SpecialNote:#GitHub:https://github.com/alltick/realtime-forex-crypto-stock-tick-finance-websoc......