美文网首页RubyRuby on RailsGolang
Ruby程序员的Golang之旅02

Ruby程序员的Golang之旅02

作者: 33d8e4ec2cc9 | 来源:发表于2017-08-06 22:30 被阅读52次

    Golang的函数 @ Ruby的方法

    不得不说在Ruby里面定义一个方法实在是过于简单,以至于在学习其他语言的时候会被各种类型限制所困扰
    ruby定义一个方法

    def hello
      "hello!"
    end
    

    参数

    def plus x, y
      x + y
    end 
    
    plus 1,2
    => 3
    

    在没有return关键字的时候,会默认返回最后一行,如果方法内没有任何东西,会返回nil

    默认参数,当方法被调用的时候没有传参数的时候,不会因为没有参数而报错

    def plus x=1, y=2
      x + y
    end
    
    plus
    => 3
    

    多值返回

    def plus x,y
      return y,x
    end
    
    a,b = plus(1, 2)
    => [2,1]
    a
    => 2
    b 
    => 1
    

    在Ruby里面定义方法,总之就是舒服,不需要考虑参数的类型和返回值的类型

    但是在Go里面就没有这么自由了

    package main
    
    import "fmt"
    
    func plus(x int, y int) int {
        return x + y
    }
    
    func main() {
        fmt.Println(add(1, 2))
    }
    

    你必须指定好,你的每一个参数是什么类型的,返回的值是什么类型的,上面plus方法中,接受两个参数x和y,他们都是int类型的,并且函数最终会返回一个int类型的结果,如果你传了一个其他类型的参数进去,或者你的方法没有最终没有返回规定的类型,编译的时候都会报错

    plus函数的两个参数都是整数型,因此也可以这样写

    func plus(x, y int) int {
        return x + y
    }
    

    多值返回的时候,也需要为每一个返回的值规定好类型

    package main
    
    import "fmt"
    
    func swap(x, y string) (string, string) {
        return y, x
    }
    
    func main() {
        a, b := swap("hello", "world")
        fmt.Println(a, b)
    }
    

    命名返回值

    package main
    
    import "fmt"
    
    func split(sum int) (x, y int) {
        x = sum * 4 / 9
        y = sum - x
        return
    }
    
    func main() {
        fmt.Println(split(17))
    }
    
    

    Go 的返回值可以被命名,并且像变量那样使用。

    没有参数的 return 语句返回结果的当前值。也就是直接返回。

    直接返回语句仅应当用在像下面这样的短函数中。在长的函数中它们会影响代码的可读性。

    相关文章

      网友评论

        本文标题:Ruby程序员的Golang之旅02

        本文链接:https://www.haomeiwen.com/subject/blvnlxtx.html