web-dev-qa-db-ja.com

Golang-配列の値を印刷する方法は?

配列にある値を見たいです。どうすれば印刷できますか?

projects []Project  
72
fnr

go fmt%v%+v、または%#v動詞を試すことができます。

fmt.Printf("%v", projects)

配列(または ここではスライス )にstructProjectなど)が含まれている場合、その詳細が表示されます。
より正確にするには、リテラルとして、Go-syntaxを使用して%#vを使用してオブジェクトを印刷できます。

%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の例

128
VonC

[]stringの場合、 strings.Join() を使用できます。

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

印刷するfmt.Printf("%+q", arr)が好きです

["some" "values" "list"]

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

4
Pylinux

カッコなしで配列の値を表示するだけの場合は、fmt.Sprint()strings.Trim()の組み合わせを使用できます

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

返却値:

a b
[a b]

ただし、このソリューションでは、最初の値から先頭の括弧が失われ、最後の値から末尾の括弧が失われることに注意してください

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

返却値:

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

詳細については、 strings.Trim() のドキュメントを参照してください

2
Eddie Curtis

fmt.Printf()は問題ありませんが、時々 pretty print package を使用したいことがあります。

import "github.com/kr/pretty"
pretty.Print(...)
0
akond