Adakah terdapat cara mudah dan boleh dibaca untuk membuat salinan kepingan tetapi menggunakan jenis lain?
Contohnya, saya menerima sekeping int32 (mySlice []int32
),但我需要它的副本,并且该副本应为 int64: copyOfMySlice []int64
.
func f(s []int32) int32 { var newSlice = make([]int64, len(s)) copy(newSlice, s) // how this can be done? // work with newSlice }
Satu-satunya cara ialah menterjemah dan menyalin setiap elemen satu demi satu. Anda boleh menulis fungsi salin menggunakan panggilan balik fungsi:
func CopySlice[S, T any](source []S, translate func(S) T) []T { ret := make([]T, 0, len(source)) for _, x := range source { ret = append(ret, translate(x)) } return ret }
dan gunakannya:
intSlice:=CopySlice[uint32,int]([]uint32{1,2,3},func(in uint32) int {return int(in)})
Atas ialah kandungan terperinci Buat kepingan daripada kepingan lain tetapi daripada jenis yang berbeza. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!