Penolakan jenis fungsi membolehkan parameter dan jenis nilai pulangan fungsi Go ditinggalkan, dan pengkompil membuat kesimpulan jenis berdasarkan badan fungsi. 1. Penggunaan: Tinggalkan pengisytiharan jenis, seperti func sum(x, y int) int { return x + y }. 2. Di sebalik tabir: Pengkompil membuat kesimpulan bahawa jenis nilai pulangan ialah jenis ungkapan dalam fungsi, dan jenis parameter ialah jenis parameter panggilan fungsi. . Pengkompil membuat kesimpulan jenis ini daripada badan fungsi pada masa penyusunan.
Cara menggunakan inferens jenis fungsi
Untuk menggunakan inferens jenis dalam fungsi, tinggalkan sahaja jenis parameter dan jenis nilai pulangan, seperti ini:
func sum(x, y int) int { return x + y }
Apa yang berlaku di sebalik tabir
Apabila menemui sesuatu compiler seperti fungsi ini, ia menyimpulkan jenis berdasarkan badan fungsi. Mula-mula, ia akan mencari pernyataan pulangan pertama bagi fungsi:
return x + y
x + y
dalam pernyataan ini ialah int
. Oleh itu, pengkompil membuat kesimpulan bahawa jenis nilai pulangan bagi fungsi sum
ialah int
. Seterusnya, pengkompil menyemak jenis parameter dalam panggilan fungsi. Dalam contoh ini, fungsi sum
dipanggil seperti berikut: fmt.Println(sum(1, 2))
fmt.Println
menjangkakan nilai jenis int
sebagai parameter . Oleh itu, pengkompil membuat kesimpulan bahawa jenis parameter bagi fungsi sum
juga daripada jenis int
. Kes praktikal
x + y
表达式类型为 int
。因此,编译器会推断出 sum
函数的返回值类型为 int
。
接下来,编译器会检查函数调用中的参数类型。在本例中,sum
函数被调用如下:
package main import "fmt" func average(x, y int) float64 { return float64(x+y) / 2 } func main() { fmt.Println(average(10, 20)) }
fmt.Println
函数期望一个 int
类型的值作为参数。因此,编译器会推断出 sum
函数的参数类型也为 int
。
实战案例
让我们使用类型推导编写一个简单的程序来计算两个数的平均值:
rrreee在这个程序中,average
函数的参数类型和返回值类型都没有指定。编译器会根据函数体推断出这些类型为 int
和 float64
Mari kita tulis atur cara mudah untuk mengira purata dua nombor menggunakan potongan jenis:
Dalam atur cara ini, jenis parameter dan nilai pulangan int
dan float64
.
Atas ialah kandungan terperinci Terokai prinsip di sebalik tabir inferens jenis fungsi Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!