No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

脷ltima oportunidad para asegurar tu aprendizaje por 1 a帽o a precio especial

Antes: $249

Currency
$189/a帽o

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscr铆bete

Termina en:

0D
5H
13M
12S

Ciclos While y For

27/42
Recursos

Aportes 3

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Cabe mencionar que realmente no necesitamos el if dentro del ciclo, puesto que GO cuenta con el 鈥渇or while鈥 que es basicamente subir el if en la misma declaracion del for de la siguiente manera:

for i < 2 {
		
	for _, servidor := range servidores {
		go revisarServidor(servidor, canal)
	}
	time.Sleep(1 * time.Second)
	fmt.Println(<-canal)
	i++
}

Y esto tendra exactamente el mismo resultado y puede ser incluso un poco mas prolijo

Aqu铆 pueden ver mas ejemplos de for en go

Buenas, lo modifique un poquito
Esta es la secuencia
Env铆a los 4 GO
Espera los 4 canales
Duerme 1 segundo
Y el lazo infinito, tiene un contador de 10

package main

import(
	"fmt"
	"net/http"
	"time"
)

func revisarServidor(servidor string , canal chan string)  {
	_ , err := http.Get(servidor)
	if err != nil{
		canal <- servidor + " No Funciona"
	}else{
		canal <- servidor + " Si Funciona"
	}

}

func main()  {

	inicio := time.Now()

	canal := make(chan string)

	servidores := []string {
		"https://platzi.com",
		"https://google.com",
		"https://facebook.com",
		"https://instagram.com",
	}

	infinito := 0

	for {
		for _,servidor := range servidores{
			go revisarServidor(servidor, canal)		
		}
	
		
		for i := 0 ; i < len(servidores) ; i++{
			fmt.Println("Indice: " , infinito , <- canal)	
		}

		time.Sleep( 1 * time.Second) 

		infinito++

		if infinito == 10{
			break
		}

	}



	tiempoPaso := time.Since(inicio)
	fmt.Printf("Tiempo de espera %s \n", tiempoPaso)
}