如何将内置运算符作为函数使用?

huangapple go评论88阅读模式
英文:

How can I get built-in operator as a function?

问题

目标
如何将内置运算符作为函数使用?
我想利用函数式编程的优势。
我有一些带有向量化函数的文件(例如Remap[inT any](sl []inT, f func(inT) inT)),它们接受一个标量函数,并将其应用于一个或两个切片的每个元素。

我知道我可以这样做:

func eq(a, b int) bool {
   return a == b
}

然后希望在内联后没有额外开销。

但是,如果有一个简短、高效且一致的方法,我更喜欢使用它。
在Python 3中,我会使用:
int.__eq__
在Rust中,我会使用:
i32::eq
在C++中,我会使用:

#include <functional>
/*code here*/
std::equal_to<int>()

你会如何在Go中实现这个目标?

英文:
The goal

How can I get a built-in operator as a function?
I want to take advantage of functional programming.
I have some files with vectorizing functions (eg. Remap[inT any](sl []inT, f func(inT) inT)), which take a scalar function to apply on every element of one or two slices.

I know I could:
func eq(a, b int)bool{
   return a==b
}

and hope that after inlining there'll be no overhead.
<br><br><br>
But I prefer a short, performant & consistent way, if exists.

  • In Python 3 I would:
    int.__eq__
  • In Rust I would:
    i32::eq
  • In C++ I would:
   #include &lt;functional&gt;
   /*code here*/
   std::equal_to&lt;int&gt;()
How would you achieve this in Go?

答案1

得分: 3

你无法将内置运算符作为函数使用。Go语言中没有提供类似的functional包。

英文:

> How can I get built-in operator as a function? Any functional package in Go?

You cannot.

huangapple
  • 本文由 发表于 2022年6月1日 17:53:14
  • 转载请务必保留本文链接:https://go.coder-hub.com/72459827.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定