Go 快速入門指南 - 變長引數

洋芋土豆發表於2022-12-30

概述

在函式的最後一個引數的資料型別之前加上省略號 ... ,表示該引數的資料型別是 變長型別
呼叫該函式時可以傳遞任意數量 ( 0 - N ) 的該型別的引數。

一個函式只能有一個變長引數,且變長引數必須為最後一個引數

例子

傳遞一個引數

package main

import "fmt"

func sum(numbers ...int) int {
    total := 0
    for _, num := range numbers {
        total += num
    }
    return total
}

func main() {
    fmt.Printf("1 = %d\n", sum(1))
}

// $ go run main.go
// 輸出如下 
/**
  1 = 1
*/

傳遞多個引數

package main

import "fmt"

func sum(numbers ...int) int {
    total := 0
    for _, num := range numbers {
        total += num
    }
    return total
}

func main() {
    fmt.Printf("1 + 2 + 3 = %d\n", sum(1, 2, 3))
}

// $ go run main.go
// 輸出如下 
/**
  1 + 2 + 3 = 6
*/

傳遞切片引數

如果要傳遞 切片型別 資料作為函式引數,只需要在引數後面加上省略號 ...

package main

import "fmt"

func sum(numbers ...int) int {
    total := 0
    for _, num := range numbers {
        total += num
    }
    return total
}

func main() {
    numbers := []int{1, 2, 3}
    fmt.Printf("1 + 2 + 3 = %d\n", sum(numbers...)) // 切片變數後面加 ... 即可
}

// $ go run main.go
// 輸出如下 
/**
  1 + 2 + 3 = 6
*/

不傳遞任何引數

package main

import "fmt"

func sum(numbers ...int) int {
    total := 0
    for _, num := range numbers {
        total += num
    }
    return total
}

func main() {
    fmt.Printf("不傳遞任何引數 = %d\n", sum())
}

// $ go run main.go
// 輸出如下 
/**
  不傳遞任何引數 = 0
*/

聯絡我

公眾號

相關文章