Як надрукувати значення фрагментів


103

Я хочу побачити значення, які знаходяться в фрагменті. Як я можу їх надрукувати?

projects []Project  

9
до того ж fmt.Println(projects)?
Not_a_Golfer

4
Також: [] Projects - це фрагмент, а не масив: golang.org/blog/go-slices-usage-and-internals
elithrar

Чому ти мені все дав -1?
fnr

2
@fnr вибачте, але рецензенти, напевно, відчули, що питання легко вирішується док. Я оновив свою відповідь, щоб показати, що це не завжди так очевидно. Ви можете залишити своє питання, воно є дійсним.
VonC

2
@fnr - -1 на цьому веб-сайті означає питання: "не показує дослідницьких зусиль; це незрозуміло або не корисно". Тож я бачу, що ви позначили своє питання "йти" та "масиви" і хочете знати, як "надрукувати" їх. Якщо я заходжу на Google.com і шукаю "перейти до масивів підручників з мовою програмування", я знайду ряд ресурсів, включаючи цей, який, схоже, може допомогти. Тож якщо це все-таки допомагає, це показує, що ви не досліджували його багато перед публікацією. Якщо це не допомагає, вам потрібно викликати такі сайти, як ви шукали, та пояснити, чому це не було корисно.
Майк

Відповіді:


171

Ви можете спробувати %v, %+vабо %#vдієслова go 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 .


26

Для a []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
Як отримати масив з роздільником комах ??
Шоба

¯ \ _ (ツ) _ / ¯ Якщо ви знайдете коротке рішення, будь ласка, додайте його як відповідь на це питання. Б'юсь об заклад, що саме це шукає більшість людей.
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

(Створили обліковий запис, щоб коментувати існуючу відповідь, але я не можу коментувати, поки у мене не вистачить запису)

Якщо ви хочете переглянути інформацію в фрагменті в тому ж форматі, який ви використовували для введення (такий як ["один", "два", "три"]), ось приклад коду, який показує, як це зробити :

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


3
Ласкаво просимо до переповнення стека! Поки ваша відповідь вносить щось нове в тему, вона належить до розділу відповідей. Немає необхідності виправдовувати це твердженням, що ваш представник занадто низький; Ваша публікація знаходиться там, де вона належить :) При цьому, як правило, бажано включати будь-який код, який ви використовуєте безпосередньо у відповідь, а не як посилання на інший сайт. Не соромтесь залишати посилання, але також скопіюйте код у свою відповідь. Дякую!
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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.