@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Go: named return values, naked return, mixed named and unnamed function parameters

A Tour of Go: Named return values にあるように、関数の戻り値の型に加えて変数名も書ける。これを named return values と呼ぶ。

Named return values を使っている関数内では引数無しで return できる。これを naked return と呼ぶ。

しかし、関数定義で named return values を使う場合、全ての戻り値に変数名を指定する必要がある。以下のコードは syntax error: mixed named and unnamed function parameters エラーになる。

package main

import (
    "fmt"
)

func f() (s string, error) {
    return "hi", nil
}

func main() {
    fmt.Println("Hello, playground")
    f()
}

https://play.golang.org/p/LDj7gyZdl_f

エラーを回避するには変数名を指定すれば良い。どうしても変数名を指定したくない場合は _ が使える。

package main

import (
    "fmt"
)

func f() (s string, _ error) {
    return "hi", nil
}

func main() {
    fmt.Println("Hello, playground")
    f()
}

https://play.golang.org/p/Xeo14U5o1sN

参考

Yes, the form for eliding individual names requires and explicit _

func (_ int, y int) int