当前位置: 首页 > 面试题库 >

Go中函数重载的替代方法?

狄旭
2023-03-14
问题内容

是否可以使用Golang以类似的方式工作,例如函数重载或C#中的可选参数?还是另一种方式?


问题答案:

直接支持函数重载和可选参数。您可以解决它们,建立自己的参数结构。我的意思是这样(未经测试,可能无法使用…)编辑:现在已测试…

package main

    import "fmt"

    func main() {
        args:=NewMyArgs("a","b") // filename is by default "c"
        args.SetFileName("k")

        ret := Compresser(args)
        fmt.Println(ret)
    }

    func Compresser(args *MyArgs) string {
        return args.dstFilePath + args.srcFilePath + args.fileName 
    }

    // a struct with your arguments
    type MyArgs struct 
    {
        dstFilePath, srcFilePath, fileName string 
    }

   // a "constructor" func that gives default values to args 
    func NewMyArgs(dstFilePath string, srcFilePath string) *MyArgs {
        return &MyArgs{
              dstFilePath: dstFilePath, 
              srcFilePath:srcFilePath, 
              fileName :"c"}
    }

    func (a *MyArgs) SetFileName(value string){
      a.fileName=value;
    }


 类似资料:
  • 问题内容: 我正在将C库移植到Go。AC函数(带有varargs)的定义如下: 因此,我创建了包装器C函数: 如果我在Go中定义函数是这样的: Go编译器抱怨: 那么Go支持功能(方法)重载了吗,还是这个错误意味着其他? 问题答案: 不,不是的。 请参阅Go语言常见问题解答,尤其是有关重载的部分。 如果方法调度也不需要进行类型匹配,则可以简化该方法。其他语言的经验告诉我们,使用具有相同名称但签名不

  • 我编写了下面的Scala代码来处理传入的字符串,格式化字符串,将其附加到中,并将带有转义unicode的格式化的返回给调用方进行其他处理。 Scala编译器在有调用的行中抱怨以下错误:

  • 现在的问题是,我是否可以创建这些函数一次,并像助手方法一样重用它们。 一个威胁是线程安全。我用一个简单的测试来检查这个JUnit测试: 我用的是VMLENS。我可以通过更改变量来优化测试,这样可以检查随机性。目的是查看这些使用相同函数的多个线程是否因为并发访问而混淆了它们的输入。测试没有返回任何阴性结果。请对测试是否符合目标做出评论。 上面使用的结果是否也可以应用于和? 对函数和字节码的更多熟悉可

  • 该方法需要检查两个或三个点是否相互垂直/水平。在三个点的情况下,它只需要检查最后两个点是否与起始点水平/垂直。 有人知道我如何把所有的东西都放到一个方法里吗?

  • 问题内容: 覆盖和过载之间有什么区别? 问题答案: 重载:在编译时根据指定参数的数量和类型选择方法 签名 覆盖:在执行时根据目标对象的实际类型(与表达式的编译时类型相对)选择方法 实现 例如: 这两个调用都是 重载的 示例。有两种方法,称为,编译器确定要调用的签名。 第一次调用是 覆盖 的示例。编译器选择签名“ foo(int)”,但是在执行时,目标对象的类型确定要使用的实现应为in中的一个。

  • 我一直在通过Netbeans使用CodeNameOne设计一个应用程序,并遇到了一些问题,特别是“找不到符号”编译错误。经过进一步的研究,我发现这是由于CNO不支持某些库/杂项。 我想知道是否有其他方法可以使用以下库/执行任务: (从文件读取)导入java.io.file;符号:类文件位置:package java.io (抛出FileNotFoundException)导入java.io.Fil