Un moyen plus court de transformer des éléments de liste dans Go
En Python, l'application d'une fonction à chaque élément d'une liste peut être obtenue à l'aide de compréhensions de liste . Cependant, en Go, une approche plus détaillée impliquant une boucle est couramment utilisée. Cette question explore une manière concise d'accomplir cette opération dans Go.
Solution Python :
list = [1,2,3] str = ', '.join(multiply(x, 2) for x in list)
Solution Go (originale) :
list := []int{1,2,3} list2 := []int for _,x := range list { list2 := append(list2, multiply(x, 2)) } str := strings.Join(list2, ", ")
Solution Go plus courte (Go 1.18 ):
func Map[T, V any](ts []T, fn func(T) V) []V { result := make([]V, len(ts)) for i, t := range ts { result[i] = fn(t) } return result }
Utilisation :
input := []int{4, 5, 3} outputInts := Map(input, func(item int) int { return item + 1 }) outputStrings := Map(input, func(item int) string { return fmt.Sprintf("Item:%d", item) })
Cette fonction Carte offre un moyen concis et générique d'appliquer une fonction à une liste de tout type , résultant en une nouvelle liste de valeurs transformées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!