Go 語言程式演示類中方法的過載


本文將學習如何在類中使用不同的示例過載方法。Go 程式語言沒有類的概念,因此將使用函式過載來執行程式。這樣可以使程式碼更靈活、更易讀。例如,您可以建立一個接受介面作為引數的函式,然後用實現該介面的幾種型別來呼叫它。讓我們看看它的執行過程。

方法 1:使用自定義型別 MyInt

這裡包含兩個方法 Print() 和 PrintWithNumber(),其中可以在這些 MyInt 型別的函式中傳送值。

演算法

  • 步驟 1 − 建立一個包 main 並宣告程式中的 fmt(格式化包)包。

  • 步驟 2 − 為內建 int 型別建立一個唯一的別名 MyInt。

  • 步驟 3 − 定義 MyInt 型別的兩個關聯方法 Print() 和 PrintWithNumber(number string)。

  • 步驟 4 − 在 main() 函式中建立一個名為 val 的 MyInt 型別變數,並賦予它值 6。

  • 步驟 5 − 使用 val 變數上的 Print() 函式列印值 6。

  • 步驟 6 − 使用引數 "number" 呼叫 val 變數上的 PrintWithNumber(number string) 函式。這將列印數字 6 並在其後列印單詞 "number"。

  • 步驟 7 − 使用 fmt.Println() 函式執行列印語句,其中 ln 表示換行。

示例

在本例中,我們將看到如何使用自定義型別 MyInt 在類中過載方法。

package main
import "fmt"

type MyInt int

func (val MyInt) Print() {
	fmt.Println(val)   //print val created in main
}

func (val MyInt) PrintWithNumber(number string) {
	fmt.Println(val, number)    //print both val of type MyInt and number of type string
}

func main() {
	val := MyInt(6)   //create val
	fmt.Println("The representation of function overloading is:")
	val.Print()                   // Output: 6
	val.PrintWithNumber("number") // Output: 6 number
}

輸出

The representation of function overloading is:
6
6 number

方法:使用 MyInt 型別的介面

這裡,.. 表示 print 函式可以接受任意數量的引數。讓我們看看程式碼和演算法來了解它是如何完成的。

語法

func len(v Type) int

len() 函式用於獲取任何引數的長度。它以一個數據型別變數作為引數,我們希望找到它的長度,並返回一個整數,即變數的長度。

演算法

  • 步驟 1 − 建立一個包 main 並宣告程式中的 fmt(格式化包)包。

  • 步驟 2 − 為內建 int 型別建立別名 MyInt。

  • 步驟 3 − 建立一個與 MyInt 型別關聯的方法 print,使得 print(args...interface)。這裡,… 用於接受任意數量的引數。

  • 步驟 4 − 在下一步中,使用 print 方法內部的 if 語句檢查 args 切片的長度。

  • 步驟 5 − 如果 args 切片的長度為零,則列印 MyInt 型別的值;如果 args 切片的長度大於零,則列印 MyInt 型別的值,後跟 args 切片。

  • 步驟 6 − 在 main() 方法中建立一個名為 val 的 MyInt 型別變數,並賦予它值 6。

  • 步驟 7 − 使用 fmt.Println() 函式列印 val 的值,其中 ln 表示換行。

示例

在本例中,我們將學習如何使用 MyInt 型別的介面在類中演示方法的過載。

package main
import "fmt"
type MyInt int

func (val MyInt) Print(args ...interface{}) {
	if len(args) == 0 {         //if the length of args slice is 0 print if statement 
		fmt.Println(val)
	} else {
		fmt.Println(val, args) //else print it 
	}
}

func main() {
	val := MyInt(6)  //create val
	fmt.Println("The function overloading is represented here:")
	val.Print()         // Output: 6
	val.Print("number") // Output: 6 [number]
}

輸出

The function overloading is represented here:
6
6 [number]

結論

我們使用兩個示例執行了方法過載程式。在第一個示例中,我們使用了自定義型別 MyInt,而在第二個示例中,我們使用了 MyInt 型別的介面。兩個程式都給出了類似的輸出。

更新於: 2023年2月1日

2K+ 瀏覽量

啟動您的 職業生涯

透過完成課程獲得認證

立即開始
廣告
© . All rights reserved.