슬라이스 값을 인쇄하는 방법


103

슬라이스에있는 값을보고 싶습니다. 어떻게 인쇄 할 수 있습니까?

projects []Project  

9
게다가 fmt.Println(projects)?
Not_a_Golfer 2014-06-30

4
또한 : [] 프로젝트는 배열이 아니라 슬라이스입니다. golang.org/blog/go-slices-usage-and-internals
elithrar

왜 모두 나에게 -1을 줬어?
fnr

2
@fnr 죄송하지만 리뷰어는 아마도 질문이 문서로 쉽게 해결되었다고 느꼈을 것입니다. 나는 그것이 항상 명확하지 않다는 것을 보여주기 위해 내 대답을 업데이트했습니다. 질문을 남길 수 있습니다. 유효한 질문입니다.
VonC 2014-06-30

2
@fnr-이 사이트의 -1은 "연구 노력을 보여주지 않습니다. 명확하지 않거나 유용하지 않습니다"라는 질문을 의미합니다. 그래서 나는 당신이 당신의 질문에 "이동"과 "배열"에 태그를 붙이고 그들을 "인쇄하는 방법"을 알고 싶어하는 것을 봅니다. Google.com으로 이동하여 "go programming language tutorial arrays"를 검색 하면 도움 될 것 같은 를 포함하여 여러 리소스를 찾을 수 있습니다. 따라서 이것이 도움이된다면 게시하기 전에 많이 조사하지 않았 음을 보여줍니다. 그래도 도움이되지 않으면 검색 한 이와 같은 사이트를 호출하고 도움이되지 않은 이유를 설명해야합니다.
Mike

답변:


171

go fmt%v, %+v또는 %#v동사를 사용해 볼 수 있습니다 .

fmt.Printf("%v", projects)

배열 (또는 여기 슬라이스 )에 struct(같은 Project) 가 포함되어 있으면 세부 정보가 표시됩니다.
정밀도를 %#v높이기 위해 리터럴과 같이 Go 구문을 사용하여 객체를 인쇄하는 데 사용할 수 있습니다 .

%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

기본 유형의 경우 fmt.Println(projects)충분합니다.


참고 : 포인터 조각의 경우, 즉 []*Project(대신 []Project) String()원하는 것을 정확하게 표시하기 위해 메서드를 정의하는 것이 좋습니다 (또는 포인터 주소 만 표시됨).
play.golang 예제를 참조하십시오 .


26

의 경우 []string다음을 사용할 수 있습니다 strings.Join().

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

17

나는 fmt.Printf("%+q", arr)어느 것을 인쇄할지 선호한다

["some" "values" "list"]

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


1
쉼표 구분 기호로 배열을 얻는 방법 ??
Shoba

¯ \ _ (ツ) _ / ¯ 짧은 해결책을 찾으면이 질문에 대한 답으로 추가하십시오. 나는 그것이 대부분의 사람들이 찾고있는 것임을 확신합니다.
Pylinux

4

대괄호없이 배열의 값만보고 싶다면 fmt.Sprint()및 조합을 사용할 수 있습니다.strings.Trim()

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

보고:

a b
[a b]

이 솔루션을 사용하면 첫 번째 값에서 모든 선행 대괄호가 손실되고 마지막 값에서 모든 후행 대괄호가 손실됩니다.

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

보고:

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

자세한 내용은 strings.Trim () 설명서를 참조하십시오.


fmt.Printf은 (strings.Trim (fmt.Sprintf (a), "[]") 우측의 괄호 누락 덕분 니펫..
pdbrito


0

(기존 답변에 댓글을 달 수있는 계정을 만들었지 만 충분한 담당자가있을 때까지 댓글을 달 수 없습니다.)

입력 할 때 사용하는 것과 동일한 형식 ([ "one", "two", "three"]과 같은)으로 Slice의 정보를 보려면 여기에 방법을 보여주는 코드 예제가 있습니다. :

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


3
Stack Overflow에 오신 것을 환영합니다! 귀하의 답변이 주제에 새로운 무언가를 제공하는 한 답변 섹션에 속합니다. 담당자가 너무 낮다고해서 정당화 할 필요가 없습니다. 귀하의 게시물이 속한 위치에 있습니다. :) 즉, 일반적으로 다른 사이트에 대한 링크가 아닌 답변에 직접 사용하는 코드를 포함하는 것이 좋습니다. 링크를 남겨 두어도 좋지만 답변에 코드를 복사하십시오. 감사!
Das_Geek

0

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)
}

이 코드는 다음과 같이 생성되고 출력됩니다.

여기에 이미지 설명 입력


자세한 내용은 https://github.com/inancgumus/prettyslice를 참조하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.