Cara mencetak nilai irisan

103

Saya ingin melihat nilai yang ada di potongan. Bagaimana cara mencetaknya?

projects []Project  
fnr
sumber
9
selain itu fmt.Println(projects)?
Not_a_Golfer
4
Juga: [] Proyek adalah sepotong, bukan sebuah array: golang.org/blog/go-slices-usage-and-internals
elithrar
Mengapa Anda semua memberi saya -1?
fnr
2
@fnr maaf, tetapi peninjau mungkin merasa pertanyaan itu mudah diselesaikan oleh dokter. Saya telah memperbarui jawaban saya untuk menunjukkan bahwa itu tidak selalu jelas. Anda dapat meninggalkan pertanyaan Anda, itu pertanyaan yang valid.
VonC
2
@fnr - a -1 di situs ini berarti pertanyaan: "tidak menunjukkan upaya penelitian; tidak jelas atau tidak berguna". Jadi saya melihat Anda menandai pertanyaan Anda "pergi" dan "array" dan ingin tahu "bagaimana cara mencetak" mereka. Jika saya pergi ke Google.com dan mencari "pergi array tutorial bahasa pemrograman" Saya menemukan sejumlah sumber daya termasuk ini yang sepertinya mungkin membantu. Jadi jika ini membantu, itu menunjukkan Anda tidak banyak meneliti sebelum memposting. Jika ini tidak membantu, Anda perlu memanggil situs seperti ini yang Anda cari dan menjelaskan mengapa itu tidak membantu.
Mike

Jawaban:

171

Anda dapat mencoba %v, %+vatau %#vkata kerja dari go fmt :

fmt.Printf("%v", projects)

Jika array Anda (atau di sini slice ) berisi struct(like Project), Anda akan melihat detailnya.
Untuk lebih presisi, Anda dapat menggunakan %#vuntuk mencetak objek menggunakan sintaks Go, seperti 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

Untuk tipe dasar saja fmt.Println(projects)sudah cukup.


Catatan: untuk sepotong pointer, yaitu []*Project(daripada []Project), Anda lebih baik menentukan String()metode untuk menampilkan dengan tepat apa yang ingin Anda lihat (atau Anda hanya akan melihat alamat pointer).
Lihat contoh play.golang ini .

VonC
sumber
26

Untuk a []string, Anda dapat menggunakan strings.Join():

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

Saya lebih suka fmt.Printf("%+q", arr)yang akan mencetak

["some" "values" "list"]

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

Pylinux
sumber
1
Bagaimana cara mendapatkan array dengan pemisah koma ??
Shoba
¯ \ _ (ツ) _ / ¯ Jika Anda menemukan solusi singkat, harap tambahkan sebagai jawaban untuk pertanyaan ini. Saya bertaruh itulah yang dicari kebanyakan orang.
Pylinux
4

Jika Anda hanya ingin melihat nilai larik tanpa tanda kurung, Anda dapat menggunakan kombinasi fmt.Sprint()danstrings.Trim()

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

Pengembalian:

a b
[a b]

Ketahuilah bahwa dengan solusi ini, semua tanda kurung di depan akan hilang dari nilai pertama dan tanda kurung apa pun akan hilang dari nilai terakhir.

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

Pengembalian:

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

Untuk info selengkapnya, lihat dokumentasi untuk string.Trim ()

Eddie Curtis
sumber
fmt.Printf (strings.Trim (fmt.Sprintf (a), "[]") tidak memiliki tanda kurung di sisi kanan. Terima kasih atas cuplikannya.
pdbrito
2

fmt.Printf()baik-baik saja, tapi terkadang saya suka menggunakan paket cantik cetak .

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

(Membuat akun untuk mengomentari jawaban yang ada, tetapi saya tidak dapat berkomentar sampai saya memiliki cukup perwakilan)

Jika Anda ingin melihat informasi dalam Slice dalam format yang sama dengan yang Anda gunakan untuk mengetikkannya (beberapa seperti ["satu", "dua", "tiga"]), berikut adalah contoh kode yang menunjukkan cara melakukannya :

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

Gamelub
sumber
3
Selamat datang di Stack Overflow! Selama jawaban Anda memberikan kontribusi sesuatu yang baru pada topik, itu termasuk dalam bagian jawaban. Tidak perlu membenarkannya dengan mengatakan reputasi Anda terlalu rendah; posting Anda tepat di tempatnya :) Meskipun demikian, biasanya lebih disukai untuk menyertakan kode apa pun yang Anda gunakan secara langsung dalam jawaban daripada sebagai tautan ke situs lain. Jangan ragu untuk meninggalkan tautan, tetapi salin juga kode ke jawaban Anda. Terima kasih!
Das_Geek
0

Anda dapat menggunakan paket 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)
}

Kode ini akan menghasilkan dan mengeluarkan seperti ini:

masukkan deskripsi gambar di sini


Untuk lebih jelasnya, silakan baca: https://github.com/inancgumus/prettyslice

Inanc Gumus
sumber