在 Go 中,變參可用於泛型函數,允許建立可接受可變數量參數且適用於多種類型的泛型函數。例如,您可以建立泛型函數 Mode,它會尋找給定清單中出現次數最多的元素:Mode 接受可變數量的 T 類型元素。它透過為每個元素建立 counts 來統計元素計數。然後它找出出現次數最多的元素,並將其作為 mode 傳回。在 main 函數中,可以為字串清單和整數清單呼叫 Mode 函數,它將分別傳回出現次數最多的字串和數字。
Go 中變參的泛型函數
前言
泛型在Go 1.18 中引入,允許我們建立不依賴特定類型參數的函數和類型。這篇部落格文章將探討 Go 中變參是否適用於泛型函數,並提供一個實戰案例。
變參
變參函數是接受可變數量參數的函數。在Go 中,變參通常使用...
語法表示,例如:
func Sum(nums ...int) int { sum := 0 for _, num := range nums { sum += num } return sum }
泛型函數
##泛型函數是參數類型可指定的函數。在Go 中,泛型函數使用[] 語法表示,例如:
func Max[T comparable](values ...T) T { max := values[0] for _, value := range values { if value > max { max = value } } return max }
變參和泛型##變參和泛型在Go 中可以一起使用,讓我們可以建立可接受可變數量參數且適用於多種類型的泛型函數。
實戰案例任務目標:
建立泛型函數來尋找給定清單中出現次數最多的元素。
程式碼:
以上是golang可變參數是否可以用於泛型函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!import "fmt"
func Mode[T comparable](values ...T) T {
counts := map[T]int{}
var mode T
var maxCount int
// 统计元素计数
for _, value := range values {
counts[value]++
}
// 找出出现次数最多的元素
for value, count := range counts {
if count > maxCount {
maxCount = count
mode = value
}
}
return mode
}
func main() {
// 字符串列表
strs := []string{"apple", "orange", "apple", "pear", "banana"}
fmt.Println("最常见的字符串:", Mode(strs...)) // apple
// 整数列表
nums := []int{1, 2, 3, 2, 4, 2, 5}
fmt.Println("最常见的数字:", Mode(nums...)) // 2
}
Mode
T
類型元素。 它會傳回出現次數最多的元素,並在
在
Mode
函數。 輸出顯示了出現次數最多的元素為 "apple"(對於字串清單)和 2(對於整數清單)。