Como imprimir os valores das fatias

103

Quero ver os valores que estão na fatia. Como posso imprimi-los?

projects []Project  
fnr
fonte
9
além disso fmt.Println(projects)?
Not_a_Golfer
4
Além disso: [] Projects is a slice, não a array: golang.org/blog/go-slices-usage-and-internals
elithrar
Por que vocês todos me deram -1?
fnr
2
@fnr desculpe, mas os revisores provavelmente acharam que a questão foi facilmente resolvida pelo doc. Eu atualizei minha resposta para mostrar que nem sempre é tão óbvio. Você pode deixar sua pergunta, é válida.
VonC
2
@fnr - a -1 neste site significa a pergunta: "não mostra esforço de pesquisa; não está claro ou não é útil". Então, vejo que você marcou sua pergunta como "ir" e "matrizes" e deseja saber "como imprimi-los". Se eu acessar o Google.com e pesquisar "ir para matrizes de tutoriais de linguagem de programação", encontro uma série de recursos, incluindo este, que parece que pode ajudar. Então, se isso ajudar, mostra que você não pesquisou muito antes de postar. Se isso não ajudar, você precisa chamar sites como esse que pesquisou e explicar por que não foram úteis.
Mike

Respostas:

171

Você pode tentar a %v, %+vou %#vverbos de fmt go :

fmt.Printf("%v", projects)

Se seu array (ou fatia aqui ) contém struct(like Project), você verá seus detalhes.
Para obter mais precisão, você pode usar %#vpara imprimir o objeto usando a sintaxe Go, como para um 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)basta.


Nota: para uma fatia de ponteiros, isto é []*Project(em vez de []Project), é melhor definir um String()método para exibir exatamente o que você deseja ver (ou verá apenas o endereço do ponteiro).
Veja este exemplo play.golang .

VonC
fonte
26

Para []string , você pode usar strings.Join():

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

Eu prefiro fmt.Printf("%+q", arr)qual vai imprimir

["some" "values" "list"]

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

Pylinux
fonte
1
Como obter array com separador de vírgula ??
Shoba
¯ \ _ (ツ) _ / ¯ Se você encontrar uma solução curta, adicione-a como uma resposta a esta pergunta. Aposto que é isso que a maioria das pessoas está procurando.
Pylinux
4

Se você quiser apenas ver os valores de uma matriz sem colchetes, você pode usar uma combinação de fmt.Sprint()estrings.Trim()

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

Retorna:

a b
[a b]

Esteja ciente de que com esta solução quaisquer colchetes iniciais serão perdidos do primeiro valor e quaisquer colchetes finais serão perdidos do último valor

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

Retorna:

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

Para obter mais informações, consulte a documentação de strings.Trim ()

Eddie Curtis
fonte
fmt.Printf (strings.Trim (fmt.Sprintf (a), "[]") está sem um parêntese no lado direito. Obrigado pelo snippet.
pdbrito
0

(Criou uma conta para comentar sobre uma resposta existente, mas não posso comentar até que tenha representante suficiente)

Se você deseja visualizar as informações em um Slice no mesmo formato que usaria para digitá-lo (alguns como ["um", "dois", "três"]), aqui está um exemplo de código que mostra como fazer isso :

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

Gamelub
fonte
3
Bem-vindo ao Stack Overflow! Contanto que sua resposta contribua com algo novo para o tópico, ela pertence à seção de respostas. Não há necessidade de justificar dizendo que sua repetição é muito baixa; sua postagem está exatamente onde pertence :) Dito isso, geralmente é preferível incluir qualquer código que você esteja usando diretamente na resposta, em vez de como um link para outro site. Sinta-se à vontade para deixar o link, mas copie o código em sua resposta também. Obrigado!
Das_Geek
0

Você pode usar o pacote 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 irá produzir e dar saída como este:

insira a descrição da imagem aqui


Para mais detalhes, leia: https://github.com/inancgumus/prettyslice

Inanc Gumus
fonte