mirror of
https://github.com/gopl-zh/gopl-zh.github.com.git
synced 2024-11-10 00:13:43 +00:00
34 lines
579 B
Go
34 lines
579 B
Go
|
// Copyright © 2016 Alan A. A. Donovan & Brian W. Kernighan.
|
||
|
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||
|
|
||
|
// See page 142.
|
||
|
|
||
|
// The sum program demonstrates a variadic function.
|
||
|
package main
|
||
|
|
||
|
import "fmt"
|
||
|
|
||
|
//!+
|
||
|
func sum(vals ...int) int {
|
||
|
total := 0
|
||
|
for _, val := range vals {
|
||
|
total += val
|
||
|
}
|
||
|
return total
|
||
|
}
|
||
|
|
||
|
//!-
|
||
|
|
||
|
func main() {
|
||
|
//!+main
|
||
|
fmt.Println(sum()) // "0"
|
||
|
fmt.Println(sum(3)) // "3"
|
||
|
fmt.Println(sum(1, 2, 3, 4)) // "10"
|
||
|
//!-main
|
||
|
|
||
|
//!+slice
|
||
|
values := []int{1, 2, 3, 4}
|
||
|
fmt.Println(sum(values...)) // "10"
|
||
|
//!-slice
|
||
|
}
|