স্লাইসের মানগুলি কীভাবে প্রিন্ট করা যায়


106

স্লাইসে থাকা মানগুলি দেখতে চাই। আমি কীভাবে এগুলি মুদ্রণ করতে পারি?

projects []Project  

10
ছাড়াও fmt.Println(projects)?
না_এ_গল্ফার

4
এছাড়াও: [] প্রকল্পগুলি একটি স্লাইস, অ্যারে নয়: golang.org/blog/go-slices-usage-and-internals
এলিথার

আপনারা সবাই আমাকে -1 দিয়েছিলেন কেন?
fnr

4
@fnr দুঃখিত, তবে পর্যালোচকরা সম্ভবত মনে করেছিলেন যে প্রশ্নটি ডক দ্বারা সহজেই সমাধান করা হয়েছিল। আমি আমার উত্তর আপডেট করেছি তা দেখানোর জন্য এটি সর্বদা সুস্পষ্ট নয়। আপনি আপনার প্রশ্নটি ছেড়ে দিতে পারেন, এটি একটি বৈধ প্রশ্ন।
ভনসি

4
@fnr - এই সাইটের একটি -1 অর্থ এই প্রশ্ন: "গবেষণার প্রচেষ্টা দেখায় না; এটি অস্পষ্ট বা কার্যকর নয়"। সুতরাং আমি দেখতে পাচ্ছি যে আপনি আপনার প্রশ্ন "যান" এবং "অ্যারে" ট্যাগ করেছেন এবং সেগুলি "কীভাবে মুদ্রণ করবেন" জানতে চান। যদি আমি Google.com এ যান এবং অনুসন্ধান "প্রোগ্রামিং ভাষা টিউটোরিয়াল অ্যারে যান" আমি অন্তর্গত সম্পদের একটি সংখ্যা খুঁজে বের এই যা মত সাহায্য করতে পারে দেখায়। সুতরাং এটি যদি সহায়তা করে তবে এটি দেখায় যে আপনি পোস্ট করার আগে এটি বেশি গবেষণা করেননি। এটি যদি সহায়তা না করে তবে আপনার অনুসন্ধানের মতো সাইটগুলি কল করতে হবে এবং কেন এটি সহায়ক ছিল না তা ব্যাখ্যা করতে হবে।
মাইক 15

উত্তর:


182

আপনি চেষ্টা করতে পারেন %v, %+vবা %#vএর ক্রিয়া চলতে চলতে FMT :

fmt.Printf("%v", projects)

যদি আপনার অ্যারে (বা এখানে স্লাইস ) থাকে struct(যেমন Project) থাকে তবে আপনি তাদের বিশদটি দেখতে পাবেন।
আরও নির্ভুলতার জন্য, আপনি %#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 উদাহরণ দেখুন


forস্লাইসে থাকা মানগুলি দেখতে আপনি একটি লুপও ব্যবহার করতে পারেন []Projectস্ট্যাকওভারফ্লো . com/a/64292187/12817546 দেখুন ।
টম এল

28

একটির জন্য []string, আপনি ব্যবহার করতে পারেন strings.Join():

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

19

আমি পছন্দ করি fmt.Printf("%+q", arr)যা মুদ্রণ করবে

["some" "values" "list"]

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


4
কমা বিভাজক দিয়ে কীভাবে অ্যারে পাবেন ??
শোভা

¯ \ _ (ツ) _ / you আপনি যদি সংক্ষিপ্ত সমাধান খুঁজে পান তবে দয়া করে এটিকে এই প্রশ্নের উত্তর হিসাবে যুক্ত করুন। আমি বাজি ধরছি যা বেশিরভাগ লোকেরা সন্ধান করে।
পাইলিনাক্স


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]]

আরও তথ্যের জন্য স্ট্রিংয়ের জন্য ডকুমেন্টেশন দেখুন ri ট্রিম ()


fmt.Printf (strings.Trim (fmt.Sprintf (ক) "[]") স্নিপেট জন্য ডান দিকে একটি বন্ধ অনুপস্থিত
pdbrito

2

আপনি যদি টাইপ করতে (একইরকম কিছু ["one", "two", "three"]) ব্যবহার করতে চান তবে একই ধরণের কোনও স্লাইসে তথ্যটি দেখতে চান , এখানে একটি কোড উদাহরণ এখানে কীভাবে করবেন তা দেখানো হয়েছে:

package main

import (
    "fmt"
    "strings"
)

func main() {
    test := []string{"one", "two", "three"}     // The slice of data
    semiformat := fmt.Sprintf("%q\n", test)     // Turn the slice into a string that looks like ["one" "two" "three"]
    tokens := strings.Split(semiformat, " ")    // Split this string by spaces
    fmt.Printf(strings.Join(tokens, ", "))      // Join the Slice together (that was split by spaces) with commas
}

খেলার মাঠে যান


1

আমি প্রেটি স্লাইস নামে একটি প্যাকেজ লিখেছিলাম। আপনি এটি স্লাইসগুলি, এবং তাদের ব্যাকিং অ্যারে ইত্যাদি কল্পনা করতে ব্যবহার করতে পারেন etc.

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/ ব্যাখ্যাtyslice


1

@ ভনসির উত্তরের উত্তরে প্রদর্শিত হিসাবে forমুদ্রণের জন্য আপনি একটি লুপ ব্যবহার করতে পারেন []Project

package main

import "fmt"

type Project struct{ name string }

func main() {
    projects := []Project{{"p1"}, {"p2"}}
    for i := range projects {
        p := projects[i]
        fmt.Println(p.name) //p1, p2
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.