golang

2016-04-14 35 views
1

Geri dönmek için çok fazla argüman var Değişkeni bir işlev atayıp çağırmaya çalışıyorum. 'golang

package main 

import "fmt" 

func main() { 
    first_name := "Hello" 
    last_name := "World!" 
    full_name := func() { 
    return first_name 
    } 
    fmt.Println(first_name) 
    fmt.Println(last_name) 
    fmt.Println(full_name) 
} 
+1

Olası yinelenen [Golang sorunu "dönmek için çok fazla argüman" çözmek için nasıl?] (Http://stackoverflow.com/ sorular/25455233/nasıl-çözmek-çok-argümanlar-dönüş-konu-içinde-golang) – Vatine

cevap

3

aşağıdaki şekilde işlev tanımını değiştirmek gerekir:

Eğer bir fonksiyonu ve ne bir şeyin (bu durumda bir dize) olduğu bir şey dönmek niyetinde olduğunu Git söyle nasıl
full_name := func() string { 
    return first_name 
    } 

. Sonra

sonra böyle yeni oluşturulan işlevini çağırmalıdır:

fmt.Println(full_name()) 
+0

Sanırım bu http://www.golangbootcamp.com/book/basics takip ediyordum ve didn ' t dönüş tipi :( – GiridharBandi

1

Hata bildirmek için çok fazla argüman atarsınız.

full_name := func() string{ // add a return type 
    return first_name 
} 

Anonim bir işlev için bile, argümanlar ve dönüş değerleri bildirilmelidir. Herhangi bir dönüş değeri belirtmediğinizden, return xx'u kullanamazsınız. Ayrıca, işlevi yürütmeyecek şekilde işlevin adresini fmt.Println(full_name) döndüreceğini unutmayın. Bunun yerine fmt.Println(full_name())'u deneyin.