Golang中传递函数参数的实现方法及示例代码 https://play.golang.org/p/6QAnd--O_hP

Golang中传递函数参数的实现方法及示例代码 https://play.golang.org/p/6QAnd--O_hP https://play.golang.org/p/6QAnd–O_hP

这里传递的是哪个函数?

17 回复

感谢提供的信息

更多关于Golang中传递函数参数的实现方法及示例代码 https://play.golang.org/p/6QAnd--O_hP的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


两者都令我着迷。Go语言对我来说非常迷人。

这与任何现代编程语言都没有太大区别。

我是新来的,还不到一年

谢谢。你最近一直非常友善,也提供了很多帮助

"这个"指的是什么?是命名事物还是传递函数?

很遗憾,除了打招呼和说"我喜欢你的狗"之外,我对我的邻居们一无所知。

这让我觉得非常有趣

当我搬到现在的住处时,也有同样的感受。但实际搜索当地的用户群组和线下聚会确实帮助我结识了更多人,最终甚至让我有机会接触到目前雇主的门槛。

相信我,我并没有改变想法,仍然认为你应该在附近找个人教你最基本的概念,这些概念你在过去大约6个月里一直没能理解。你仍然在原地打转。

// 代码块保留区域

2 个赞

谢谢。我认为这回答了我另一个问题,但我之前不知道如何表述。问题是,在 func sum(x ...int) int { 中,sum 是函数的随机命名,还是预先确定的?

func sum(x ...int) int {

正在学习这篇帖子。
for _, v := range x 中,v 是否始终代表值?还是 v 是任意选择的(我似乎反复问这个问题,但我想确认它在所有情况下都成立)?

for _, v := range x {
    // 代码逻辑
}

有趣。

搜索本地用户群组和线下聚会确实有助于结识更多人。

很惭愧地说,我忘了您之前教导的引用标记方法,也找不到您指导我的具体位置。

我很乐意尝试!我姐姐向我推荐了一个叫Slack的工具。虽然已经下载但还没开始使用。我觉得它可能有着相似的目标。(其实我还在等她指导)

在这一行:

	t := evenSum(sum, []int{1, 2, 3, 4, 5, 6, 7, 8, 9}...)

您正在将函数 sum 传递给函数 evenSum

evenSum 中,它通过函数参数绑定到 ff func(x ...int) int 使得 f 能够接受任何可变参数且仅接受 int 类型的函数)。

当我提到"邻里"时,我指的不是开门就能看到的那些房屋。这更多是一种比喻意义上的概念。邻里意味着所有那些不需要花费太多时间或金钱就能到达的地方。

对我来说,这大致上是我家与办公室之间宽3公里的走廊区域,总面积约90平方公里。

如果我把车停在换乘停车场,这个范围还能再扩大20到30平方公里,因为有些地区乘坐火车/公交车比开车更容易到达。

不过,如果你像我年轻时那样住在技术欠发达的村庄,我多少能理解在那里很难找到志同道合的技术爱好者。但在那样的村庄里,人们通常对街对面的邻居了解得比你描述的要多得多。

range 返回1个或2个值。第一个值总是索引/键(取决于 range 参数的类型),第二个值是实际的值。

在遍历 map[…]… 类型时使用 kv,或在遍历数组或切片类型时使用 iv,这是常见的编程习惯。

但由于命名是代码文档的一部分,我也经常倾向于使用有意义的名称。通常直接使用容器名称的单数形式(我通常对集合类型使用复数形式)。

for _, name := range names {
  fmt.Println(name)
}

在您提供的示例代码中(https://play.golang.org/p/6QAnd–O_hP),传递的函数是 multiply,它被作为参数传递给 doMath 函数。具体来说,doMath 函数的第二个参数是一个函数类型 func(int, int) int,而 multiply 函数正好匹配这个签名(接受两个 int 参数并返回一个 int)。

以下是代码的简要说明:

  • multiply 函数:实现两个整数的乘法运算。
  • doMath 函数:接受一个函数参数 f(类型为 func(int, int) int)和两个整数参数 ab,然后调用 f(a, b) 并返回结果。

示例代码:

package main

import "fmt"

func multiply(a, b int) int {
    return a * b
}

func doMath(f func(int, int) int, a, b int) int {
    return f(a, b)
}

func main() {
    result := doMath(multiply, 5, 3)
    fmt.Println(result) // 输出:15
}

main 函数中,doMath(multiply, 5, 3)multiply 函数作为参数传递,最终计算并输出 5 * 3 = 15

回到顶部