123 votes

Pour boucle de deux variables dans Go

Ce qui suit pour la boucle dans Go n'est pas autorisé,

 for i := 0, j := 1; i < 10; i++, j++ {...}
 

Quel est l'équivalent correct de la boucle for de deux variables ci-dessous?

 for (int i = 0, j = 1; i < 10; i ++ , j ++) {...} 
 

230voto

twotwotwo Points 2187

Vous n'avez pas d'opérateur virgule pour joindre plusieurs instructions, mais vous avez plusieurs affectations, donc cela fonctionne :

 package main

import (
    "fmt"
)

func main() {
    for i, j := 0, 1; i < 10; i, j = i+1, j+1 {
        fmt.Println("Hello, playground")
    }
}
 

30voto

Abdul Rehman Points 335

Bien que la Réponse ci-dessus est acceptée, et satisfaire pleinement le besoin. Mais je voudrais apporter quelques explications.

Golang Ne prend pas en charge beaucoup de choses qui peut être fait en termes simples. Pour la boucle est un exemple courant de cela. La beauté de Go Pour la boucle, c'est qu'il fusionne beaucoup de style moderne de la boucle en un seul mot-clé.

De même Golang faire avec Plusieurs la déclaration de la Variable et de l'affectation. Selon le problème mentionné ci-dessus, On peut résoudre les multi-variable pour la boucle avec cet outil simple qui Golang nous offre. Si vous voulez voir dans de plus amples explications, cette question de fournir de plus amples détails et le mode de déclaration de plusieurs variables en une seule instruction.

De retour pour la boucle for, Si nous voulons nous déclarons une variable de même type de données que nous pouvons déclarer avec ce

var a,b,c string

mais nous utilisons court en boucle de sorte que nous pouvons le faire pour l'initialisation d'eux avec la même valeur

  i,j := 0

Les différents Types de données et des Valeurs Différentes

et si nous voulons déclarer les différents types de variables et que vous souhaitez affecter des valeurs différentes, nous pouvons le faire en séparant les noms de variables et après := différentes valeurs par des virgules ainsi. par exemple

 c,i,f,b := 'c',23423,21.3,false

L'utilisation de l'Opérateur d'Affectation

Plus tard, nous pouvons attribuer des valeurs à des variables multiples, avec la même approche.

    x,y := 10.3, 2
    x,y = x+10, y+1

Le mélange Struct et les types Normaux dans un état unique

Même nous pouvons utiliser struct types ou des pointeurs de la même façon. Voici une fonction pour effectuer une itération liste, qui est défini comme une struct

func (this *MyLinkedList) Get(index int) int {
    for i,list := 0,this; list != nil; i,list = i+1,list.Next{
        if(i==index){
            return list.Val
        }
    }
    return -1
}

Cette liste est définie comme

type MyLinkedList struct {
      Val int
      Next *MyLinkedList

 }

Répondre au Problème d'Origine

Venir à la Question de l'origine, Simplement, il pourrait être fait

for i, j := 0, 1; i < 10; i, j = i+1, j+1 {
        fmt.Println("i,j",i,j)
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X