- 名前付き返り値が設定されている状態だと、
return
だけ記載することができ、その場合は名前付き返り値が暗黙的に返却される。
func example()(ret string){
ret = "hello world"
return
}
func main(){
fmt.Println(example()) // hello world
}
- 一方で、名前付き返り値を設定しておきながら、別の変数を返却することも可能
func example() (ret string) {
ret = "hello world"
ret2 := "goodbye world"
return ret2 //新たに定義した変数を返す
}
func main() {
fmt.Println(example()) // goodbye world
}
- コンパイルエラーにならない。名前付き返り値を設定している意味がないし、予期せぬ挙動を招いてしまう可能性があるので、名前付きの方を返却するように修正するか、あるいは元から名前付きにしないようにする。