Refleksi membolehkan kami memanggil kaedah secara dinamik mengikut jenis dan nama kaedah. Dengan mendapatkan nilai kaedah sesuatu jenis dan memanggil kaedah Panggilannya, kami boleh mengautomasikan panggilan kaedah, yang berkuasa dalam tugas seperti pengisihan.
Go Reflection Black Technology: Gunakan Panggilan Kaedah untuk Merealisasikan Automasi
Pengenalan
Reflection ialah ciri Go yang berkuasa yang membolehkan program memeriksa dan mengubah suai strukturnya sendiri pada masa jalan. Melalui refleksi, kita boleh memanggil kaedah secara dinamik dan memainkan peranan yang kuat dalam mengautomasikan tugas.
Method Calling
Refleksi membolehkan kita memanggil kaedah mengikut jenis dan nama kaedah. Sintaks khusus adalah seperti berikut:
type ReflectValue interface { MethodByName(name string) *MethodValue Call([]Value) []Value }
ReflectValue
接口表示可反射的值。MethodByName
方法通过名称获取方法值。Call
方法调用方法并返回结果值。实战案例
让我们来看一个实战案例,动态调用 Sort
MethodByName
mendapat nilai kaedah mengikut nama. Kaedah
Panggil
memanggil kaedah dan mengembalikan nilai hasil. Kes praktikal
Mari kita lihat kes praktikal, secara dinamik memanggil kaedah Isih
untuk mengisih tatasusunan:
package main import ( "fmt" "reflect" ) func main() { // 创建一个数组 arr := []int{3, 1, 2} // 获取数组类型 typ := reflect.TypeOf(arr) // 获取 Sort 方法 sortMethod := typ.MethodByName("Sort") // 调用 Sort 方法 sortMethod.Call(reflect.ValueOf(arr)) // 输出排序后的数组 fmt.Println(arr) }
Atas ialah kandungan terperinci Teknologi hitam pantulan Golang: menggunakan panggilan kaedah untuk mencapai automasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!