Apakah keperluan untuk parameter formal golang?

青灯夜游
Lepaskan: 2022-12-19 11:28:42
asal
4700 orang telah melayarinya

Parameter fungsi dalam bahasa Go ialah parameter formal, yang merupakan pembolehubah setempat, dan nilainya disediakan oleh pemanggil parameter jika jenis parameter formal bersebelahan adalah sama, jenis yang pertama beberapa parameter boleh ditinggalkan, anda hanya perlu menulis jenis parameter terakhir, sintaks "func funcName(parameter formal 1, parameter formal 2 jenis parameter 1, parameter formal 3, parameter formal 4 jenis parameter 2, ...) (senarai nilai pulangan) { / /Laksanakan kenyataan...kembali senarai nilai pulangan}".

Apakah keperluan untuk parameter formal golang?

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

Parameter fungsi bahasa Go

Parameter fungsi dalam bahasa Go ialah parameter formal, iaitu, jika kita melepasi nilai , parameter yang diluluskan sebenarnya adalah salinan parameter sebenar, bukan parameter sebenar sebenar. Parameter formal ialah pembolehubah tempatan yang nilainya disediakan oleh pemanggil parameter.

Dalam bahasa Go, jika beberapa parameter fungsi bersebelahan mempunyai jenis yang sama, maka kita boleh meninggalkan jenis beberapa parameter pertama dan hanya perlu menulis jenis parameter terakhir.

func funcName(param1, param2 paramType1, param3, param4 paramType2, ...)(returnVal returnType){	// 执行语句...
	return 返回值列表
}
Salin selepas log masuk

Penjelasan

  • Parameter param1 dan parameter param2 mempunyai jenis yang sama, maka kita boleh meninggalkan jenis parameter selepas param1 dan secara langsung Tulis jenis selepas param2.

  • Parameter param3 dan parameter param4 mempunyai jenis yang sama, jadi kita boleh meninggalkan jenis parameter selepas param3 dan menulis jenis terus selepas param4.

  • returnVal returnType ialah senarai nilai pulangan, menerangkan nama pembolehubah dan jenis nilai pulangan fungsi Jika fungsi mengembalikan pembolehubah yang tidak dinamakan atau tiada nilai pulangan, kurungan dalam pemulangan senarai nilai boleh diabaikan.

Sarung

Gunakan fungsi untuk mencari pembahagi sepunya terbesar bagi dua nombor

package main
import (
	"fmt"
)
func gcdNormal(x, y int) int {
	var n int
	if x > y {
		n = y
	} else {
		n = x
	}
	for i := n; i >= 1; i-- {
		if x%i == 0 && y%i == 0 {
			return i
		}
	}
	return 1
}
func main() {
	//用函数,实现计算两个数的最大公约数
	gcd := gcdNormal(10,20)
	fmt.Println("Gcd =", gcd)
}
Salin selepas log masuk

Selepas program dijalankan, output konsol adalah seperti berikut:

Apakah keperluan untuk parameter formal golang?

Kami mentakrifkan fungsi gcdNormal, menghantar dua parameter jenis int a dan b , fungsi mengembalikan pembolehubah jenis int. Fungsi ini menggunakan kaedah menyeluruh untuk melaksanakan logik mencari pembahagi sepunya terbesar bagi parameter a dan parameter b Oleh kerana jenis parameter a dan parameter b adalah kedua-dua jenis int, kami meninggalkan jenis selepas parameter a dan menulisnya terus dalam parameter. b.

Dalam fungsi main(), kami memanggil fungsi gcdNormal dan lulus dalam dua parameter 10 dan 20, menggunakan pembolehubah gcd untuk menerima nilai yang dikembalikan oleh fungsi gcdNormal, dan akhirnya menggunakan fungsi Println() untuk mencetak keputusan akhir.

Parameter fungsi ialah parameter formal

Parameter fungsi dalam bahasa Go ialah parameter formal dan pengubahsuaian pada parameter fungsi tidak akan menjejaskan parameter sebenar

package main
import (
"fmt"
)
func change(a int) {
a += 100
}
func main() {
//Go语言的函数参数是函数参数,对函数参数的修改不会影响实参
a := 10
change(a)
fmt.Println("a =", a)
}
Salin selepas log masuk

Selepas program dijalankan, output konsol adalah seperti berikut:

Apakah keperluan untuk parameter formal golang?

Kami mentakrifkan perubahan fungsi(), menghantar parameter jenis int a , dalam badan fungsi, tambah 100 pada parameter fungsi ini.

Dalam fungsi main(), panggil fungsi ini dan masukkan pembolehubah a Selepas melaksanakan fungsi change(), kami mencetak nilai pembolehubah a sekali lagi dan mendapati bahawa nilai a masih 10. , bukan 100. 110 selepas itu.

Oleh kerana dalam bahasa Go, parameter fungsi adalah parameter formal, iaitu salinan parameter sebenar, jadi apa yang diubah suai bukanlah parameter sebenar, jadi nilai a tidak akan berubah.

Ubah suai parameter sebenar melalui parameter fungsi

Untuk mengubah suai parameter sebenar melalui parameter fungsi dalam fungsi bahasa Go, anda mesti menggunakan jenis penunjuk

package main
import (
	"fmt"
)
func change(a *int) {
	*a += 100
}
func main() {
	//Go语言的函数要通过函数参数修改实参,必须要使用指针类型
	a := 10
	change(&a)
	fmt.Println("a =", a)
}
Salin selepas log masuk

Apakah keperluan untuk parameter formal golang?

Kami mentakrifkan perubahan fungsi(), menghantar parameter a jenis penunjuk int, dan dalam badan fungsi, tambah 100 pada parameter fungsi.

Dalam fungsi main(), panggil fungsi ini dan masukkan alamat pembolehubah a Selepas melaksanakan fungsi change(), kami mencetak nilai pembolehubah a sekali lagi dan mendapati bahawa nilai a telah meningkat sebanyak 100. Ia menjadi 110.

Fungsi change() di sini melepasi alamat a Kemudian kami menggunakan operator penunjuk dalam fungsi change() untuk mendapatkan pembolehubah ditunjuk oleh alamat a, dan kemudian mengubah suai nilainya hakikatnya, pengubahsuaian adalah nilai pembolehubah a itu sendiri.

Ringkasan parameter fungsi bahasa Go

Parameter fungsi dalam bahasa Go ialah parameter formal, iaitu, jika kita melepasi nilai, Parameter sebenarnya adalah salinan parameter sebenar, bukan parameter sebenar sebenar.

Dalam bahasa Go, jika beberapa parameter fungsi bersebelahan mempunyai jenis yang sama, maka kita boleh meninggalkan jenis beberapa parameter pertama dan hanya perlu menulis jenis parameter terakhir.

Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati: Video Pengaturcaraan! !

Atas ialah kandungan terperinci Apakah keperluan untuk parameter formal golang?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!