最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

golang中接口對(duì)象的轉(zhuǎn)型兩種方式

 更新時(shí)間:2021年10月11日 15:25:46   作者:專職  
這篇文章主要介紹了golang中接口對(duì)象的轉(zhuǎn)型方式,大家都知道接口對(duì)象的轉(zhuǎn)型有兩種方式,文中通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

接口對(duì)象的轉(zhuǎn)型有兩種方式:

1. 方式一:instance,ok:=接口對(duì)象.(實(shí)際類型)

  如果該接口對(duì)象是對(duì)應(yīng)的實(shí)際類型,那么instance就是轉(zhuǎn)型之后對(duì)象,ok的值為true
  配合if...else if...使用

2. 方式二:

  接口對(duì)象.(type)
  配合switch...case語句使用

示例:

package main
 
import (
    "fmt"
    "math"
)
 
type shape interface {
    perimeter() int
    area() int
}
 
type rectangle struct {
    a int  // 長
    b int  // 寬
}
func (r rectangle) perimeter() int {
    return (r.a + r.b) * 2
}
func (r rectangle) area() int {
    return r.a * r.b
}
 
type circle struct {
    radios int
}
func (c circle) perimeter() int {
    return 2 * c.radios * int(math.Round(math.Pi))
}
func (c circle) area() int {
    return int(math.Round(math.Pow(float64(c.radios), 2) * math.Pi))
}
 
func getType(s shape) {
    if i, ok := s.(rectangle); ok {
        fmt.Printf("長方形的長:%d,長方形的寬是:%d\n", i.a, i.b)
    } else if i, ok := s.(circle); ok {
        fmt.Printf("圓形的半徑是:%d\n", i.radios)
    }
}
 
func getType2(s shape) {
    switch i := s.(type) {
    case rectangle:
        fmt.Printf("長方形的長:%d,長方形的寬是:%d\n", i.a, i.b)
    case circle:
        fmt.Printf("圓形的半徑是:%d\n", i.radios)
    }
}
 
func getResult(s shape) {
    fmt.Printf("圖形的周長是:%d,圖形的面積是:%d\n", s.perimeter(), s.area())
}
 
func main() {
    r := rectangle{a: 10, b: 20}
    getType(r)
    getResult(r)
 
    c := circle{radios: 5}
    getType2(c)
    getResult(c)
}

上面的例子使用的是方式一,如果要使用方式2,可以將getType()函數(shù)改為:

func getType(s shape) {
 switch i := s.(type) {
 case rectangle:
  fmt.Printf("圖形的長:%.2f,圖形的寬:%.2f \n", i.a, i.b)
 case triangle:
  fmt.Printf("圖形的第一個(gè)邊:%.2f,圖形的第二個(gè)邊:%.2f,圖形的第三個(gè)邊:%.2f \n",i.a,i.b,i.c)
 case circular:
  fmt.Printf("圖形的半徑:%.2f \n",i.radius)
 }
}

PS:上面求三角形面積使用了海倫公式求三角形的面積,公式為:

三角形的面積=平方根[三角形周長的一半×(三角形周長的一半減去第一個(gè)邊)×(三角形周長的一半減去第二個(gè)邊)×(三角形周長的一半減去第三個(gè)邊)]

到此這篇關(guān)于golang中接口對(duì)象的轉(zhuǎn)型的文章就介紹到這了,更多相關(guān)golang接口對(duì)象內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang Socket Server自定義協(xié)議的簡單實(shí)現(xiàn)方案

    Golang Socket Server自定義協(xié)議的簡單實(shí)現(xiàn)方案

    這篇文章主要介紹了Golang Socket Server自定義協(xié)議的簡單實(shí)現(xiàn)方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • golang語言實(shí)現(xiàn)的文件上傳與文件下載功能示例

    golang語言實(shí)現(xiàn)的文件上傳與文件下載功能示例

    這篇文章主要介紹了golang語言實(shí)現(xiàn)的文件上傳與文件下載功能,結(jié)合實(shí)例形式分析了Go語言實(shí)現(xiàn)的文件傳輸相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • Go語言學(xué)習(xí)otns示例分析

    Go語言學(xué)習(xí)otns示例分析

    這篇文章主要為大家介紹了Go語言學(xué)習(xí)otns示例分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Go1.21新增slices包的用法詳解

    Go1.21新增slices包的用法詳解

    Go?1.21新增的?slices?包提供了很多和切片相關(guān)的函數(shù),可以用于任何類型的切片,這篇文章主要來和大家介紹一下slices包中相關(guān)函數(shù)的用法,需要的可以參考一下
    2023-08-08
  • Goland的設(shè)置與配置全過程

    Goland的設(shè)置與配置全過程

    這篇文章主要介紹了Goland的設(shè)置與配置全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • go語言多線程操作實(shí)現(xiàn)

    go語言多線程操作實(shí)現(xiàn)

    多線程是一種使程序能夠并行處理多個(gè)任務(wù)的技術(shù),Go語言通過goroutine和channel提供了一種相比傳統(tǒng)線程更輕量級(jí)、易于管理的并發(fā)實(shí)現(xiàn)方式,本文就來介紹一下go語言多線程操作實(shí)現(xiàn),感興趣的可以了解一下
    2024-11-11
  • Golang中使用Mqtt的方法示例

    Golang中使用Mqtt的方法示例

    本文介紹了Golang中使用paho.mqtt.golang庫實(shí)現(xiàn)MQTT客戶端與服務(wù)器的連接、訂閱和消息收發(fā),具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-02-02
  • 關(guān)于golang 字符串 int uint int64 uint64 互轉(zhuǎn)問題

    關(guān)于golang 字符串 int uint int64 uint64&

    這篇文章主要介紹了golang 字符串 int uint int64 uint64 互轉(zhuǎn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • golang搭建靜態(tài)web服務(wù)器的實(shí)現(xiàn)方法

    golang搭建靜態(tài)web服務(wù)器的實(shí)現(xiàn)方法

    這篇文章主要介紹了golang搭建靜態(tài)web服務(wù)器的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • 一文詳解Go語言中Mutex互斥鎖

    一文詳解Go語言中Mutex互斥鎖

    Golang中的Mutex互斥鎖是一種常用的并發(fā)控制機(jī)制,用于保護(hù)共享資源的訪問,在本文中,我們將深入探討Mutex互斥鎖的原理、日常使用、鎖結(jié)構(gòu)以及運(yùn)行機(jī)制,需要的朋友可以參考下
    2023-12-12

最新評(píng)論

陵川县| 巢湖市| 鄂州市| 宣城市| 南木林县| 卓尼县| 沾化县| 乡宁县| 当阳市| 托里县| 乐东| 遵化市| 绩溪县| 澎湖县| 三江| 安塞县| 洞口县| 柞水县| 荔浦县| 治县。| 望都县| 集安市| 德江县| 老河口市| 广德县| 老河口市| 永年县| 淄博市| 肃宁县| 弋阳县| 通海县| 嵊泗县| 禹州市| 景东| 芜湖县| 广东省| 唐海县| 永平县| 宁晋县| 武邑县| 松潘县|