English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golang Basic Tutorial

Golang Control Statements

Golang Function & Method

Golang Struct

Golang Slice & Array

Golang String(String)

Golang Pointer

Golang Interface

Golang Concurrency

Golang Exception(Error)

Golang Miscellaneous

Go Language Function Returns Multiple Values

في لغة Go، يمكنك استخدام جملة return لتحويلدالةيعود بعدة قيم. بمعنى آخر، يمكن للدالة أن تعود عدة قيم باستخدام جملة return واحدة. نوع القيم يعاد يشبه نوع المعلمات المحددة في قائمة المعلمات.

النحو:

func function_name(parameter_list)(return_type_list){
     // code...
}

في هذا المكان،

  • function_name:هيدالةالاسم.

  • parameter-list:هي تحتوي على أسماء و أنواع معلمات الدالة.

  • return_type_list:هذا هو اختياري، ويشمل نوع القيم العائدة للدالة. إذا تم استخدام return_type في الدالة، فيجب استخدام جملة return في الدالة.

package main
import "fmt"
// myfunc تعود بـ 3 قيم int
func myfunc(p, q int) (int, int, int) {
    return p - q, p * q, p + q
}
func main() {
    //لإسناد القيم إلى، متغيرات مختلفة
    var myvar1, myvar2, myvar3 = myfunc(4, 2)
    // عرض القيمة
    fmt.Printf("النتيجة هي: %d", myvar1)
    fmt.Printf("\nالنتيجة هي: %d", myvar2)
    fmt.Printf("\nالنتيجة هي: %d", myvar3)
}

النتيجة:

النتيجة هي: 2
النتيجة هي: 8
النتيجة هي: 6

تسمية القيم العائدة

في لغة Go، يُسمح بتقديم أسماء للقيم العائدة. يمكنك أيضًا استخدام هذه الأسماء في الكود. ليس من الضروري كتابة هذه الأسماء باستخدام جملة return، لأن معالج Go سيفهم تلقائيًا أن هذه القيم يجب توزيعها مرة أخرى. هذا النوع من العوائد يُسمى العوائد العارية. يقلل العوائد البسيطة من التكرار في البرنامج.

النحو:

func function_name(para1, para2 int)(name1 int, name2 int){
    // code...
}
أو
func function_name(para1, para2 int)(name1, name2 int){
   // code...
}

في هذا المكان،name1وname2هذه هي أسماء القيم، بينما para1 و para2 هي معلمات الدالة.

package main
import "fmt"
//myfunc تعود بـ 2 قيم int
//هذه هي أسماء القيم
//هذا هو rectangle و square
func myfunc(p, q int) (rectangle int, square int) {
    rectangle = p * q
    square = p * p
    return
}
func main() {
    //لإسناد القيم
    //متغيران مختلفان
    var area1, area2 = myfunc(2, 4)
    fmt.Printf("مساحة المربع: %d", area1)
    fmt.Printf("\nمساحة المربع: %d", area2)
}

النتيجة:

مساحة المربع: 8
مساحة المربع: 4