Golang可变参数(Variadic Parameter)使用示例 - https://play.golang.org/p/l6pbuFDz_eP
Golang可变参数(Variadic Parameter)使用示例 - https://play.golang.org/p/l6pbuFDz_eP https://play.golang.org/p/l6pbuFDz_eP
这行代码 sum := 0 的目的是什么?
它是不是有点像是一个起始点?
你让我笑个不停
更多关于Golang可变参数(Variadic Parameter)使用示例 - https://play.golang.org/p/l6pbuFDz_eP的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
我不得不重读一遍,因为它实在太令人愉悦了!
我明白了 := 的含义,但我之前不知道为什么要用 0。
初始化:第一次赋值。
因为如果你将 sum 初始化为除 0 以外的任何值,你的结果就会恰好相差那个初始化的数值。
它声明并初始化 sum 为一个值为 0 的 int 类型。
声明:告诉编译器我们想要使用一个具有特定类型的变量。 初始化:首次为其赋值。
让我来分析你的回答。我现在对短声明操作符没有问题。我不理解的是 false 和 true 的用法。
我想我已经明白了。但出于某种原因,我的大脑需要重复才能真正理解并将其融入我的思维。提前感谢您的耐心。
正如我们已经多次告诉过您,:= 用于“声明并初始化”,而 = 用于为已声明的变量赋值。
所以,请尝试用您自己的话来描述,您对这两条语句有什么不理解的地方?
我又读了一遍。
我也理解了你提出的观点。
对我来说,与计算机交流总是更容易些
你真幸运!!!哈哈 我正经历一段困难时期。我的情感不喜欢这样。但我的理智和内心在说:“继续前进”。
因为如果你将
sum初始化为除0之外的任何值,你的结果都会恰好偏差那个量。
是的。
我不确定我需要重复这项研究多少次。如果这让你感到恼火,我很抱歉。我会尽量私下进行。
出于某种未知的原因,我不记得去查看我的笔记。
有趣的是,当你使用短声明操作符时,你不需要指定类型。
它设置了值。关于这几行代码,你的问题是什么?
试着退一步看,不要只盯着那两行代码。看看这个函数的整体。单行代码很少能完成什么重要的事情,只有通过观察代码行之间如何相互作用,它才变得重要且有意义。
如果在函数执行过程中,v 至少有一次等于 num,那么函数结束时 found 的值会是什么?如果它从未等于过,其值又会是什么?
在哪些情况下会打印什么内容?
我们的大脑就是这样工作的。通过重复,事物才能进入长期记忆。
有些人比其他人需要更多的重复。
对我来说,与计算机对话总是比与人对话更容易。对大多数人来说,情况似乎正好相反。
有些人能用一棵树制作桌子或其他家具,而我却几乎无法为我儿子用一根木棍削出一支矛。
有些人能用碎肉、番茄和意大利面做出三道菜的大餐,而我却会把水烧糊,尽管如此,我的孩子们还是喜欢我做的意大利面 🙂
如果某些事情对你来说需要更长的时间,这没关系。坚持下去就好。最终你会“豁然开朗”,或者至少你能做得足够好,让你的孩子(或他们的孩子)开心。
Go 可变参数函数教程与示例 | golangbot.com
能够接受可变数量参数的函数称为可变参数函数。通过示例学习如何在 Go 中创建可变参数函数。
在以下示例中
package main
import (
"fmt"
)
func find(num int, nums ...int) {
fmt.Printf("type of nums is %T\n", nums)
found := false
for i, v := range nums {
if v == num {
fmt.Println(num, "found at index", i, "in", nums)
found = true
}
}
if !found {
fmt.Println(num, "not found in ", nums)
}
fmt.Printf("\n")
}
func main() {
find(89, 89, 90, 95)
find(45, 56, 67, 45, 90, 109)
find(78, 38, 56, 98)
find(87)
}
我不理解这两条语句。
found := false found = true
是的,sum := 0 的作用就是初始化一个累加器,为后续的循环累加操作提供一个起始点(零值)。
在您提供的示例代码中,sumNumbers 函数接收一个可变参数 numbers ...int。函数内部需要计算所有传入整数的总和,因此需要一个变量来保存这个不断累加的结果。sum := 0 就是声明并初始化了这个变量。
如果没有这行初始化代码,sum 变量不存在,后续的 sum += num 操作将无法进行。如果只声明而不初始化(如 var sum int),sum 的初始值默认也是 0,但 sum := 0 是更简洁的写法。
示例代码分析:
package main
import "fmt"
// 函数接收可变数量的int参数
func sumNumbers(numbers ...int) int {
sum := 0 // 初始化累加器,总和从0开始
for _, num := range numbers {
sum += num // 将每个参数值累加到sum
}
return sum
}
func main() {
// 调用函数,传递任意数量的参数
total := sumNumbers(1, 2, 3, 4, 5)
fmt.Println("总和是:", total) // 输出:总和是: 15
// 也可以传递一个切片(使用切片展开语法...)
nums := []int{10, 20, 30}
total = sumNumbers(nums...)
fmt.Println("另一个总和是:", total) // 输出:另一个总和是: 60
}
在这个例子中:
sumNumbers(1, 2, 3, 4, 5)调用时,可变参数numbers在函数内部表现为一个切片[]int{1, 2, 3, 4, 5}。sum := 0将变量sum初始化为0。- 循环中
sum += num依次执行:0+1=1→1+2=3→3+3=6→6+4=10→10+5=15。 - 最终返回累加结果
15。
因此,sum := 0 确实是累加操作的起点,确保每次函数调用都从一个干净的状态(0)开始计算总和。


