Initialisation d'un tableau dans Go sans boucle For
Lorsque vous travaillez avec des tableaux dans Go, il est souvent nécessaire d'initialiser leurs valeurs. La méthode la plus simple consiste à utiliser une boucle for, comme le montre l'exemple suivant :
<code class="go">for i := 0; i < n; i++ { A[i] = true }</code>
Cependant, cette approche peut devenir fastidieuse pour les grands tableaux. Heureusement, il existe plusieurs alternatives disponibles.
Litéraux composites
Les littéraux composites vous permettent de créer et d'initialiser des tableaux et des tranches de manière plus concise :
<code class="go">b1 := []bool{true, true, true} b2 := [3]bool{true, true, true}</code>
Notez que les littéraux composites initialiseront toujours le tableau à la valeur zéro pour le type donné. Dans le cas de bool, cela signifie que toutes les valeurs seront fausses.
Utiliser une constante
Si vous souhaitez initialiser tous les éléments à une valeur spécifique (par exemple, true ), vous pouvez introduire une constante et l'utiliser dans le littéral composite :
<code class="go">const T = true b3 := []bool{T, T, T}</code>
Logique alternative
Dans certaines situations, il peut être plus efficace de stocker la inverse des valeurs souhaitées dans le tableau. Cela vous permet de profiter du comportement du tableau mis à zéro par défaut :
<code class="go">presents := []bool{true, true, true, true, true, true} // Equivalent to: missings := make([]bool, 6) // All false (not missing)</code>
Fonctionnement efficace du "memset"
Si les performances sont critiques, vous pouvez envisager d'utiliser ce qui suit implémentation de l'opération memset :
<code class="go">import ( "bytes" "unsafe" ) func memset(p []interface{}, v interface{}) { b := bytes.NewBuffer(make([]byte, unsafe.Sizeof(v))) b.Reset() for i := range p { b.Write(b.Bytes()) copy(p[i:i+1], *(*[]byte)(unsafe.Pointer(&v))) } }</code>
Cette approche est particulièrement efficace pour les grands tableaux.
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!