登录
首页 >  Golang >  Go问答

按姓名呼叫接线员

来源:stackoverflow

时间:2024-03-27 15:12:30 322浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《按姓名呼叫接线员》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

例如,用于按名称调用内置运算符的 python operator 包的 go 等价物是什么?

意思是,我该怎么做:

func f(op func(int, int)bool, a int, b int)
    ...
    if op(a, b) {
        ...

f(operators.LessThan, 1, 2) // true

否则,如何编写一个函数,该函数接受什么基本运算符作为函数参数?


解决方案


首先,您不应该假设语言 x 与语言 z 中的功能 y 具有任何等效项。此外,您应该为您正在使用的语言编写/设计代码,而不是像设计另一种语言一样进行设计,然后翻译行-逐行或逐个函数。

正如评论中提到的,运算符是 go 中内置的,没有运算符重载或功能等效项。如果您还没有,您应该阅读 Go Tour 并阅读 Language Specification,看看 go 有什么。

如果您确实想要/需要做您要求的事情,这是一种方法:

package main

import "fmt"

type Compare func(int, int) bool

func DoCompare(cmp Compare, a, b int) bool {
    return cmp(a, b)
}

var (
    CmpLessThan           = func(a, b int) bool { return a < b }
    CmpLessThanOrEqual    = func(a, b int) bool { return a <= b }
    CmpGreaterThan        = func(a, b int) bool { return a > b }
    CmpGreaterThanOrEqual = func(a, b int) bool { return a >= b }
)

func main() {
    fmt.Println(DoCompare(CmpLessThan, 1, 2))
}

Go Playground

通常,如果需要类似的东西,则不使用多个比较函数,而是使用单个比较函数,该函数返回 <0、0 或 >0(例如 -1、0、+1),表示小于、等于、比...更棒。例如,big.Int.Cmp

好了,本文到此结束,带大家了解了《按姓名呼叫接线员》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>