سؤال

هل هناك طريقة اصطلاحية لتجليد نتيجة وظيفة إرجاع قيم متعددة؟هذا لن يترجم:

giveacodicetagpre.

موجز التحديث (شكر خاص ل rvignacio):

هذا هو خصوصية في بناء جملة الذهاب:

giveacodicetagpre.

كحالة خاصة، إذا كانت قيم الإرجاع لوظيفة أو طريقة G متساوية في العدد وتعديلها بشكل فردي لمعلمات وظيفة أخرى أو طريقة أخرى، فستتصل المكالمة f (g (parameters_of_g))و بعد ربط قيم عودة G إلى معلمات F في النظام.يجب أن تحتوي دعوة F لا تحتوي على معلمات أخرى غير مكالمة G، ويجب أن يكون لدى G قيمة عودة واحدة على الأقل.إذا كان F يحتوي على المعلمة النهائية ... يتم تعيين قيم عودة G التي لا تزال بعد تعيين المعلمات العادية. ( http://golang.org/ref/spec#calls )

هل كانت مفيدة؟

المحلول

يمكنك تعيين هذه القيم الإرجحية أولا:

giveacodicetagpre.

يمكنك أن ترى مثالا في " قيم عودة متعددةمن وظائف الذهاب ".

باستخدام قيمة إرجاع متعددة مباشرة في الأجيال يعمل (نظرا لأنها تقبل المعلمات variadic ):

في قضيتك: play.golang.org P> giveacodicetagpre.

الإخراج:

giveacodicetagpre.

نصائح أخرى

I aprrove the method of VonC, which is cleaner, but if you really want, you can get inspired by the Must() kind of function and do something like this:

http://play.golang.org/p/_dik4rSFBC

package main

import "fmt"

func returnPair() (int, int) {
    return 42, 24
}

func displayPair(a, b interface{}) string {
    return fmt.Sprint(a, b)
}

func main() {
    fmt.Printf("pair: %v\n", displayPair(returnPair()))
}

EDIT:

Or more generic:

http://play.golang.org/p/DjPur-aatt

package main

import "fmt"

func returnPair() (int, int) {
    return 42, 24
}

func returnTriple() (int, int, int) {
    return 42, 24, 10
}

func displayPair(elem ...interface{}) string {
    return fmt.Sprint(elem...)
}

func main() {
    fmt.Printf("pair: %v, triple %v\n", displayPair(returnPair()), displayPair(returnTriple()))
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top