スライスの値を出力する方法


103

スライスに含まれる値を確認したい。どうすれば印刷できますか?

projects []Project  

9
ほかにfmt.Println(projects)
Not_a_Golfer 14年

4
また、[] Projectsは配列ではなくスライスです。golang.org
blog

なぜみんな私に-1をくれたの?
fnr 2014年

2
@fnr申し訳ありませんが、レビュアーはおそらく、質問はドキュメントによって簡単に解決されると感じました。私はそれが常に明白ではないことを示すために私の答えを更新しました。あなたはあなたの質問を残すことができます、それは有効なものです。
VonC 2014年

2
@fnr-このサイトの-1は質問を意味します:「研究努力を示さない;それは不明確または役に立たない」。質問に「go」と「arrays」のタグを付けて、「印刷方法」を知りたいと思います。Google.comにアクセスして「go programming language tutorial array」を検索すると、これを含む多くのリソースが見つかります。したがって、これが役立つ場合は、投稿する前にあまり調べていなかったことを示しています。これで効果がない場合は、検索したこのようなサイトを呼び出して、なぜ役に立たなかったのかを説明する必要があります。
マイク14

回答:


171

あなたは試すことができ%v%+vまたは%#vの動詞行くFMT

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の例をご覧ください。



17

私はfmt.Printf("%+q", arr)どちらが印刷されるのを好む

["some" "values" "list"]

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


1
カンマ区切りの配列を取得するにはどうすればよいですか?
ショーバ

¯\ _(ツ)_ /¯短い解決策を見つけたら、この質問への回答として追加してください。私はそれがほとんどの人が探しているものだと思っています。
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()、「[]」)は、右側の括弧が欠落しているスニペットをありがとう。。
pdbrito


0

(既存の回答にコメントするアカウントを作成しましたが、担当者が十分になるまでコメントできません)

入力に使用したのと同じ形式(["one"、 "two"、 "three"]など)でスライスの情報を表示する場合は、次のコード例を使用して、 :

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.