سجل القيم المتعددة المرتجعة في الذهاب
-
21-12-2019 - |
سؤال
هل هناك طريقة اصطلاحية لتجليد نتيجة وظيفة إرجاع قيم متعددة؟هذا لن يترجم:
giveacodicetagpre.موجز التحديث (شكر خاص ل rvignacio):
هذا هو خصوصية في بناء جملة الذهاب:
giveacodicetagpre. كحالة خاصة، إذا كانت قيم الإرجاع لوظيفة أو طريقة G متساوية في العدد وتعديلها بشكل فردي لمعلمات وظيفة أخرى أو طريقة أخرى، فستتصل المكالمة f (g (parameters_of_g))و بعد ربط قيم عودة G إلى معلمات F في النظام.يجب أن تحتوي دعوة F لا تحتوي على معلمات أخرى غير مكالمة G، ويجب أن يكون لدى G قيمة عودة واحدة على الأقل.إذا كان F يحتوي على المعلمة النهائية ... يتم تعيين قيم عودة G التي لا تزال بعد تعيين المعلمات العادية. (
المحلول
يمكنك تعيين هذه القيم الإرجحية أولا:
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()))
}