Rumah > pembangunan bahagian belakang > Golang > Apakah kaedah memanggil fungsi dalam bahasa Go?

Apakah kaedah memanggil fungsi dalam bahasa Go?

青灯夜游
Lepaskan: 2022-12-01 19:32:00
asal
6840 orang telah melayarinya

Dalam bahasa Go, selepas mentakrifkan fungsi, kita boleh memanggil fungsi melalui "nama fungsi ()", sintaksnya ialah "senarai pembolehubah nilai pulangan = nama fungsi (senarai parameter)". Apabila "()" mengandungi berbilang parameter, pembolehubah parameter dipisahkan dengan koma dan tidak perlu diakhiri dengan koma bertitik dalam "senarai pembolehubah nilai pulangan", berbilang nilai pulangan dipisahkan dengan koma.

Apakah kaedah memanggil fungsi dalam bahasa Go?

Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.

Fungsi membentuk struktur logik pelaksanaan kod Dalam bahasa Go, komponen asas fungsi ialah: fungsi kata kunci, nama fungsi, senarai parameter, nilai pulangan, badan fungsi dan pernyataan pulangan fungsi, dan fungsi ialah blok asas kod.

Oleh kerana bahasa Go ialah bahasa yang disusun, susunan fungsi ditulis adalah tidak relevan Memandangkan keperluan kebolehbacaan, adalah lebih baik untuk menulis fungsi main() di hadapan fail dan fungsi lain dalam susunan logik tertentu (cth. susunan fungsi dipanggil).

Tujuan utama menulis pelbagai fungsi adalah untuk menguraikan masalah kompleks yang memerlukan banyak baris kod menjadi satu siri tugasan mudah untuk diselesaikan. Selain itu, tugasan (fungsi) yang sama boleh dipanggil berbilang kali, yang membantu Penggunaan semula kod (sebenarnya, atur cara yang baik memberi perhatian yang besar kepada prinsip KERING, iaitu, Jangan Ulangi Sendiri (Jangan Ulangi Diri Sendiri), yang bermaksud bahawa kod yang melaksanakan tugas tertentu hanya boleh muncul sekali dalam atur cara) .

Fungsi akan keluar apabila ia mencapai baris terakhir blok kod } atau sebelum pernyataan pulangan boleh mempunyai sifar atau lebih parameter, dan parameter ini akan digunakan sebagai nilai pulangan untuk pemanggil. Pernyataan pemulangan ringkas juga boleh digunakan untuk menamatkan gelung tak terhingga bagi, atau untuk menamatkan goroutine.

Terdapat tiga jenis fungsi dalam bahasa Go:

  • Fungsi biasa dengan nama
  • Fungsi tanpa nama atau fungsi lambda
  • Kaedah

Pengisytiharan fungsi biasa (takrif)

Pengisytiharan fungsi termasuk nama fungsi, senarai parameter formal, senarai nilai pulangan (boleh ditinggalkan) dan badan fungsi.

func 函数名(形式参数列表)(返回值列表){
    函数体
}
Salin selepas log masuk

Senarai parameter formal menerangkan nama parameter dan jenis parameter fungsi Parameter ini digunakan sebagai pembolehubah setempat, dan nilainya disediakan oleh pemanggil parameter Senarai nilai pulangan nama pembolehubah dan jenis nilai pulangan fungsi Jika fungsi mengembalikan pembolehubah yang tidak dinamakan atau tidak mempunyai nilai pulangan, kurungan dalam senarai nilai pulangan boleh ditinggalkan.

Memanggil fungsi

Selepas fungsi ditakrifkan, ia boleh dipanggil untuk membenarkan kod semasa melompat ke fungsi yang dipanggil untuk pelaksanaan Lokasi fungsi sebelum panggilan Pembolehubah akan disimpan dan tidak akan hilang Selepas fungsi yang dipanggil selesai berjalan, ia akan meneruskan ke baris seterusnya fungsi panggilan dan terus melaksanakan kod Pembolehubah tempatan sebelumnya juga boleh terus diakses.

Pembolehubah setempat dalam fungsi hanya boleh digunakan dalam badan fungsi Selepas panggilan fungsi selesai, pembolehubah setempat ini akan dikeluarkan dan tidak sah.

Format panggilan fungsi bahasa Go adalah seperti berikut:

返回值变量列表 := 函数名(参数列表)
Salin selepas log masuk

Berikut ialah penerangan bagi setiap bahagian:

  • Nama fungsi: nama fungsi yang perlu dipanggil.
  • Senarai parameter: Pembolehubah parameter dipisahkan dengan koma dan tidak perlu diakhiri dengan koma bertitik.
  • Senarai pembolehubah nilai pulangan: Berbilang nilai pulangan dipisahkan dengan koma.

Sebagai contoh, gaya panggilan fungsi penambahan adalah seperti berikut:

result := add(1,1)
Salin selepas log masuk

Nilai pulangan fungsi

Bahasa Go menyokong berbilang nilai pulangan, berbilang Nilai pulangan dengan mudah boleh mendapatkan berbilang parameter pulangan selepas pelaksanaan fungsi Bahasa Go sering menggunakan parameter pulangan terakhir dalam berbilang nilai pulangan untuk mengembalikan ralat yang mungkin berlaku semasa pelaksanaan fungsi.

conn, err := connectToNetwork()
Salin selepas log masuk
Salin selepas log masuk

在这段代码中,connectToNetwork 返回两个参数,conn 表示连接对象,err 返回错误信息。

其它编程语言中函数的返回值

  • C/C++ 语言中只支持一个返回值,在需要返回多个数值时,则需要使用结构体返回结果,或者在参数中使用指针变量,然后在函数内部修改外部传入的变量值,实现返回计算结果,C++ 语言中为了安全性,建议在参数返回数据时使用“引用”替代指针。
  • C# 语言也没有多返回值特性,C# 语言后期加入的 ref 和 out 关键字能够通过函数的调用参数获得函数体中修改的数据。
  • lua 语言没有指针,但支持多返回值,在大块数据使用时方便很多。

Go语言既支持安全指针,也支持多返回值,因此在使用函数进行逻辑编写时更为方便。

1) 同一种类型返回值

如果返回值是同一种类型,则用括号将多个返回值类型括起来,用逗号分隔每个返回值的类型。

使用 return 语句返回时,值列表的顺序需要与函数声明的返回值类型一致,示例代码如下:

func typedTwoValues() (int, int) {
    return 1, 2
}
func main() {
    a, b := typedTwoValues()
    fmt.Println(a, b)
}
Salin selepas log masuk
Salin selepas log masuk

代码输出结果:

1 2
Salin selepas log masuk

纯类型的返回值对于代码可读性不是很友好,特别是在同类型的返回值出现时,无法区分每个返回参数的意义。

2) 带有变量名的返回值

Go语言支持对返回值进行命名,这样返回值就和参数一样拥有参数变量名和类型。

命名的返回值变量的默认值为类型的默认值,即数值为 0,字符串为空字符串,布尔为 false、指针为 nil 等。

下面代码中的函数拥有两个整型返回值,函数声明时将返回值命名为 a 和 b,因此可以在函数体中直接对函数返回值进行赋值,在命名的返回值方式的函数体中,在函数结束前需要显式地使用 return 语句进行返回,代码如下:

func namedRetValues() (a, b int) {
    a = 1
    b = 2
    return
}
Salin selepas log masuk
Salin selepas log masuk

代码说明如下:

  • 第 1 行,对两个整型返回值进行命名,分别为 a 和 b。
  • 第 3 行和第 4 行,命名返回值的变量与这个函数的布局变量的效果一致,可以对返回值进行赋值和值获取。
  • 第 6 行,当函数使用命名返回值时,可以在 return 中不填写返回值列表,如果填写也是可行的,下面代码的执行效果和上面代码的效果一样。
    func namedRetValues() (a, b int) {
        a = 1
        return a, 2
    }
    Salin selepas log masuk
    Salin selepas log masuk

提示

同一种类型返回值和命名返回值两种形式只能二选一,混用时将会发生编译错误,例如下面的代码:

func namedRetValues() (a, b int, int)
Salin selepas log masuk
Salin selepas log masuk

编译报错提示:

mixed named and unnamed function parameters
Salin selepas log masuk

意思是:在函数参数中混合使用了命名和非命名参数。

【相关推荐:Go视频教程

Atas ialah kandungan terperinci Apakah kaedah memanggil fungsi dalam bahasa Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan