Di GO, fungsi ditakrifkan menggunakan kata kunci func
yang diikuti dengan nama fungsi dan satu set kurungan yang mengandungi senarai parameter. Badan fungsi disertakan dalam pendakap keriting {}
. Berikut adalah contoh asas definisi fungsi:
<code class="go">func add(a int, b int) int { return ab }</code>
Dalam contoh ini, add
adalah fungsi yang mengambil dua parameter jenis int
dan mengembalikan int
.
Untuk memanggil fungsi di GO, anda hanya menggunakan nama fungsi yang diikuti oleh argumen dalam kurungan. Contohnya:
<code class="go">result := add(3, 4) fmt.Println(result) // Output: 7</code>
Di sini, add
fungsi dipanggil dengan Argumen 3
dan 4
, dan hasilnya disimpan dalam pemboleh ubah result
.
Dalam GO, penamaan fungsi mengikuti konvensyen tertentu untuk mengekalkan kebolehbacaan dan konsistensi. Berikut adalah beberapa amalan terbaik:
calculateAverage
.calculateAverage
dan bukannya sesuatu yang cryptic seperti calcAvg
.calculate
lebih disukai daripada calc
.Add
dieksport, sementara add
tidak.Di Go, anda boleh lulus argumen ke fungsi menggunakan kaedah yang berbeza, masing -masing dengan ciri -cirinya sendiri:
Parameter nilai : Cara lalai untuk lulus argumen dalam GO adalah dengan nilai. Apabila anda lulus argumen dengan nilai, satu salinan nilai dibuat dan diserahkan kepada fungsi tersebut. Perubahan kepada parameter di dalam fungsi tidak menjejaskan nilai asal di luar fungsi.
<code class="go">func incrementByValue(x int) { x } a := 1 incrementByValue(a) fmt.Println(a) // Output: 1 (a remains unchanged)</code>
Parameter Pointer : Anda boleh lulus penunjuk ke nilai. Ini membolehkan fungsi mengubahsuai nilai asal.
<code class="go">func incrementByPointer(x *int) { (*x) } a := 1 incrementByPointer(&a) fmt.Println(a) // Output: 2 (a is modified)</code>
Parameter Variadik : Go menyokong fungsi variadik, yang boleh menerima bilangan argumen yang tidak terbatas dari jenis yang sama. Parameter variadik dilambangkan oleh ...
sebelum jenis.
<code class="go">func sum(numbers ...int) int { total := 0 for _, num := range numbers { total = num } return total } fmt.Println(sum(1, 2, 3, 4)) // Output: 10</code>
Nilai pulangan dalam fungsi GO memainkan peranan penting dalam membolehkan fungsi untuk menyampaikan hasil kembali kepada pemanggil. Berikut adalah perkara penting mengenai nilai pulangan dalam perjalanan:
Nilai pulangan tunggal : Fungsi boleh mengembalikan satu nilai. Jenis pulangan ditentukan selepas senarai parameter.
<code class="go">func square(x int) int { return x * x }</code>
Nilai pulangan berganda : GO membolehkan fungsi untuk mengembalikan pelbagai nilai. Ini berguna untuk mengembalikan kedua -dua hasil dan ralat.
<code class="go">func divide(a, b float64) (float64, error) { if b == 0 { return 0, errors.New("division by zero") } return a / b, nil } result, err := divide(10, 2) if err != nil { fmt.Println(err) } else { fmt.Println(result) // Output: 5 }</code>
Dinamakan Nilai Pulangan : Go menyokong nilai pulangan yang dinamakan, yang boleh menjadikan kod itu lebih mudah dibaca. Nilai pulangan yang dinamakan diisytiharkan sebagai sebahagian daripada tandatangan fungsi.
<code class="go">func namedReturn(x int) (result int) { result = x * x return }</code>
Pulangan Bare : Apabila menggunakan nilai pulangan yang dinamakan, GO membolehkan penggunaan pernyataan return
terdedah, yang mengembalikan nilai pulangan yang dinamakan.
<code class="go">func namedReturnWithBareReturn(x int) (result int) { result = x * x return // equivalent to return result }</code>
Nilai pulangan adalah penting untuk pengendalian ralat, yang membolehkan fungsi mengembalikan kedua -dua hasil dan status ralat, yang merupakan corak yang sama dalam pengaturcaraan GO.
Atas ialah kandungan terperinci Bagaimana anda menentukan dan memanggil fungsi di Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!