golang跨包實現接口,golang請求第三方接口

本文目錄一覽:

golang 新人求助:關於接口的應用

go裡面接口不是顯示的實現的;

如果你給一個接口變量賦一個實現過此接口方法的對象時,都可以被認為這個對象實現了這個接口,並可以使用。

java怎麼調用golang的接口

1 接口的定義與理解

接口是一個自定義類型,它是一組方法的集合。從定義上來看,接口有兩個特點。第一,接口本質是一種自定義類型,因此不要將golang中的接口簡單理解為C++/Java中的接口,後者僅用於聲明方法簽名。第二,接口是一種特殊的自定義類型,其中沒有數據成員,只有方法(也可以為空)。

接口是完全抽象的,因此不能將其實例化。然而,可以創建一個其類型為接口的變量,它可以被賦值為任何滿足該接口類型的實際類型的值。接口的重要特性是:

(1)只要某個類型實現了接口要的方法,那麼我們就說該類型實現了此接口。該類型的值可以賦給該接口的值;

(2)作為1的推論,任何類型的值都可以賦值給空接口interface{}

注意:這只是golang中接口的特性,為非所有類型的特性(接口是一種特殊的類型)。

接口的特性是golang支持鴨子類型的基礎,即“如果它走起來像鴨子,叫起來像鴨子(實現了接口要的方法),它就是一隻鴨子(可以被賦值給接口的值)”。憑藉接口機制和鴨子類型,golang提供了一種有利於類、繼承、模板之外的更加靈活強大的選擇。

2 例子

type Exchanger interface {

exchange()

}

type StringPair struct {

first, second string

}

type Point[2]int

func (sp *StringPair) exchange() {

sp.first, sp.second = sp.second, sp.first

}

func (p *Point) exchange() {

p[0], p[1] = p[1], p[0]

}

func exchangeThese(exchangers …Exchanger) {

for _, exchanger := range exchangers {

exchanger.exchange()

}

}

func main() {

pair1 := StringPair{“abc”,”def”}

pair2 := StringPair{“ghi”,”jkl”}

point := Point{5, 7}

fmt.Println(pair1, pair2, point)

pair1.exchange()

pair2.exchange()

point.exchange()

fmt.Println(pair1, pair2, point)

// exchangeThese(pair1, pair2) //wrong

exchangeThese(pair1, pair2)

fmt.Println(pair1, pair2)

}

運行結果

在本例中,自定義類型StringPair和Point指針實現了接口Exchanger所需的方法,因此該類型的值可以被賦值給接口的值。

另外,特別注意一點。如果使用exchangeThese(pair1,

pair2)會導致編譯錯誤(如下圖),正確寫法應當是exchangeThese(pair1,

pair2)。這是由於真正滿足接口Exchanger的類型是StringPair指針,而非StringPair。

在golang中,值接收者和指針接收者的方法集是不同的。只是golang會智能地解引用和取引用,使得二者的方法集看上去是一樣的。但是,在調用exchangeThese時,就凸顯出二者的不同了。

Golang入門到項目實戰 | golang接口

接口像是一個公司裡面的領導,他會定義一些通用規範,只設計規範,而不實現規範。

go語言的接口,是一種新的類型定義,它把所有的具有共性的方法定義在一起,任何其他類型只要實現了這些方法就是實現了這個接口。

語法格式和方法非常類似。

在接口定義中定義,若干個空方法。這些方法都具有通用性。

下面我定義一個USB接口,有讀read和寫write兩個方法,再定義一個電腦Computer和一個手機Mobile來實現這個接口。

USB接口

Computer結構體

Mobile結構體

Computer實現USB接口方法

Mobile實現USB接口方法

測試

運行結果

下面我們定義一個OpenClose接口,裡面有兩個方法open和close,定義個Door結構體,實現其中一個方法。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/255066.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:15
下一篇 2024-12-15 12:15

相關推薦

  • 使用Golang調用Python

    在現代軟件開發中,多種編程語言的協作是相當普遍的。其中一種使用場景是Golang調用Python,這使得在使用Python庫的同時,可以利用Golang的高性能和強大並發能力。這篇…

    編程 2025-04-29
  • Python Web開發第三方庫

    本文將介紹Python Web開發中的第三方庫,包括但不限於Flask、Django、Bottle等,並討論它們的優缺點和應用場景。 一、Flask Flask是一款輕量級的Web…

    編程 2025-04-29
  • Java 監控接口返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控接口返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • 使用Golang創建黑色背景圖片的方法

    本文將從多個方面介紹使用Golang創建黑色背景圖片的方法。 一、安裝必要的代碼庫和工具 在開始創建黑色背景圖片之前,我們需要先安裝必要的代碼庫和工具: go get -u git…

    編程 2025-04-29
  • Python如何下載第三方模塊

    想要使Python更加強大且具備跨平台性,我們可以下載許多第三方模塊。下面將從幾個方面詳細介紹如何下載第三方模塊。 一、使用pip下載第三方模塊 pip是Python的軟件包管理器…

    編程 2025-04-28
  • Kong 使用第三方的go插件

    本文將針對Kong使用第三方的go插件進行詳細闡述。首先,我們解答下標題的問題:如何使用第三方的go插件?我們可以通過編寫插件來達到此目的。 一、插件架構介紹 Kong的插件系統采…

    編程 2025-04-28
  • python第三方規模的龐大

    Python語言第三方規模是龐大的,多方面的指標都可以證明。下面從幾個方面闡述。 一、模塊、包數量 Python第三方模塊數量是Python生態系統最顯著的特徵之一。截至2019年…

    編程 2025-04-28
  • Python接口自動化測試

    本文將從如下多個方面對Python編寫接口自動化進行詳細闡述,包括基本介紹、常用工具、測試框架、常見問題及解決方法 一、基本介紹 接口自動化測試是軟件測試中的一種自動化測試方式。通…

    編程 2025-04-27
  • Python文本處理第三方庫有哪些

    Python是一種高級語言,它的功能非常強大和全面,其中最重要之一就是它的文本處理能力。文本處理對於自然語言處理以及大數據分析都有着非常重要的作用。Python的標準庫提供了字符串…

    編程 2025-04-27
  • Jadoor門鎖開發接口接入指南

    本文將從多個方面詳細介紹如何將門鎖接入Jadoor平台的開發接口,方便開發者們快速實現門鎖遠程控制、開鎖記錄查看等功能。 一、Jadoor門鎖開發接口簡介 Jadoor是一款用於密…

    編程 2025-04-27

發表回復

登錄後才能評論