Soy nueva en Go y tengo 2 preguntas:

1 Digamos que tenemos un bucle for simple escrito en C #:

static void Main(string[] args)
    {
        List<int> list = new List<int>();
        for (int i = 1; i < 10000; i++)
        {
            if (i % 5 == 0 && i % 3 == 0)
            {
                list.Add(i);
            }
        }
        foreach (int prime in list)
        {
            System.Console.WriteLine(prime);
        }
        Console.ReadKey();
    }

Si quisiera hacer lo mismo en Go, tendré que usar rebanadas. ¿Pero cómo hacer eso?

  1. ¿Cuál de las formas de declaración de variables se usa con más frecuencia: forma corta (s: = 3) o larga (var s int = 3)?
1
seeker 29 dic. 2016 a las 00:14

3 respuestas

La mejor respuesta

En Go, las matrices tienen su lugar, pero son un poco inflexibles, por lo que no las ve con demasiada frecuencia en el código Go. Rebanadas, sin embargo, están en todas partes. Se basan en matrices para proporcionar una gran potencia y conveniencia.

La rebanada no tiene una longitud fija. Es flexible.

Puede declarar un segmento vacío de la siguiente manera

list := make([]int, 0)
list := []int{}
var list []int

Así es como puede corregir la función anterior en ir

package main

import (
    "fmt"
)


func main() {
        var list []int
        for i:=0;i<10000;i++ {
            if i %5 == 0 && i % 3 == 0 {
                list = append(list, i)
            }
        } 
        for _, val := range list {
            fmt.Println(val)
        }
}

Aquí está el enlace de reproducción play

2
Sarath Sadasivan Pillai 29 dic. 2016 a las 00:58

1) Crea una rebanada con:

list := make([]int, 0)

Agregar a una rebanada con:

list = append(list, i)

2) Creo que no hay una respuesta única para su segunda pregunta. Depende de cómo y dónde se use la variable.

1
Kare Nuorteva 28 dic. 2016 a las 21:39

Para 2) Usé ": =" porque quiero obtener el mismo tipo con otra variable, y uso otro como var foo int = 3 // Quiero una barra de variable int: = foo // Quiero barra del mismo tipo con foo

0
Kiochan 29 dic. 2016 a las 01:42