Cómo imprimir los valores de los cortes

103

Quiero ver los valores que están en el segmento. ¿Cómo puedo imprimirlos?

projects []Project  
fnr
fuente
9
además fmt.Println(projects)?
Not_a_Golfer
4
Además: [] Los proyectos son una porción, no una matriz: golang.org/blog/go-slices-usage-and-internals
elithrar
¿Por qué todos me dieron -1?
2014
2
@fnr lo siento, pero los revisores probablemente sintieron que la pregunta fue resuelta fácilmente por el doc. Sin embargo, he actualizado mi respuesta para mostrar que no siempre es tan obvio. Puedes dejar tu pregunta, es válida.
VonC
2
@fnr - un -1 en este sitio significa que la pregunta: "no muestra esfuerzo de investigación; no está claro o no es útil". Veo que etiquetó su pregunta como "ir" y "matrices" y quiere saber "cómo imprimirlas". Si voy a Google.com y busco "ir a matrices de tutoriales de lenguaje de programación", encuentro varios recursos, incluido este, que parece que podría ayudar. Entonces, si esto ayuda, muestra que no lo investigó mucho antes de publicarlo. Si esto no ayuda, debe llamar a sitios como este que buscó y explicar por qué no fue útil.
Mike

Respuestas:

171

Puedes probar los verbos %v, %+vo %#vde go fmt :

fmt.Printf("%v", projects)

Si su matriz (o aquí segmento ) contiene struct(me gusta Project), verá sus detalles.
Para mayor precisión, puede usar %#vpara imprimir el objeto usando la sintaxis Go, como para un literal:

%v  the value in a default format.
    when printing structs, the plus flag (%+v) adds field names
%#v a Go-syntax representation of the value

Para tipos básicos, fmt.Println(projects)es suficiente.


Nota: para una porción de punteros, es decir []*Project(en lugar de []Project), es mejor que defina un String()método para mostrar exactamente lo que desea ver (o verá solo la dirección del puntero).
Vea este ejemplo de play.golang .

VonC
fuente
26

Para a []string, puede usar strings.Join():

s := []string{"foo", "bar", "baz"}
fmt.Println(strings.Join(s, ", "))
// output: foo, bar, baz
jgillich
fuente
17

Prefiero fmt.Printf("%+q", arr)cual imprimirá

["some" "values" "list"]

https://play.golang.org/p/XHfkENNQAKb

Pylinux
fuente
1
¿Cómo obtener una matriz con separador de comas?
Shoba
¯ \ _ (ツ) _ / ¯ Si encuentra una solución corta, agréguela como respuesta a esta pregunta. Apuesto a que eso es lo que la mayoría de la gente busca.
Pylinux
4

Si solo desea ver los valores de una matriz sin corchetes, puede usar una combinación de fmt.Sprint()ystrings.Trim()

a := []string{"a", "b"}
fmt.Print(strings.Trim(fmt.Sprint(a), "[]"))
fmt.Print(a)

Devoluciones:

a b
[a b]

Sin embargo, tenga en cuenta que con esta solución, los corchetes iniciales se perderán del primer valor y los corchetes finales se perderán del último valor

a := []string{"[a]", "[b]"}
fmt.Print(strings.Trim(fmt.Sprint(a), "[]")
fmt.Print(a)

Devoluciones:

a] [b
[[a] [b]]

Para obtener más información, consulte la documentación de strings.Trim ()

Eddie Curtis
fuente
fmt.Printf (strings.Trim (fmt.Sprintf (a), "[]") falta un par en el lado derecho. Gracias por el fragmento.
pdbrito
0

(Creé una cuenta para comentar sobre una respuesta existente, pero no puedo comentar hasta que tenga suficiente representante)

Si desea ver la información en un sector en el mismo formato que usaría para escribirla (algunos como ["uno", "dos", "tres"]), aquí hay un ejemplo de código que muestra cómo hacerlo :

https://play.golang.org/p/vOF6xZ__Otr

Gamelub
fuente
3
¡Bienvenido a Stack Overflow! Siempre que su respuesta aporte algo nuevo al tema, pertenece a la sección de respuestas. No hay necesidad de justificarlo diciendo que su reputación es demasiado baja; su publicación está justo donde pertenece :) Dicho esto, generalmente se prefiere incluir cualquier código que esté usando directamente en la respuesta en lugar de como un enlace a otro sitio. Siéntase libre de dejar el enlace, pero también copie el código en su respuesta. ¡Gracias!
Das_Geek
0

Puede utilizar el paquete Pretty Slice:

package main

import pretty "github.com/inancgumus/prettyslice"

func main() {
    nums := []int{1, 9, 5, 6, 4, 8}
    odds := nums[:3]
    evens := nums[3:]

    nums[1], nums[3] = 9, 6
    pretty.Show("nums", nums)
    pretty.Show("odds : nums[:3]", odds)
    pretty.Show("evens: nums[3:]", evens)
}

Este código se producirá y generará como este:

ingrese la descripción de la imagen aquí


Para obtener más detalles, lea: https://github.com/inancgumus/prettyslice

Inanc Gumus
fuente