diff options
| author | Rose Hogenson <rosehogenson@posteo.net> | 2025-04-11 22:45:11 -0700 |
|---|---|---|
| committer | Rose Hogenson <rosehogenson@posteo.net> | 2025-04-11 22:45:11 -0700 |
| commit | 1dddfbbff7f9dcd82c9969fce43b9da09cf40b0d (patch) | |
| tree | 0640ad42fcdbbf964b88984db5bc19b06031b6f6 | |
| parent | 3f2f8a6909219b3a1b9564338037c9a31418bc99 (diff) | |
| download | deque-1dddfbbff7f9dcd82c9969fce43b9da09cf40b0d.tar.zst | |
Add a .String() method
| -rw-r--r-- | deque.go | 15 | ||||
| -rw-r--r-- | deque_test.go | 12 |
2 files changed, 27 insertions, 0 deletions
@@ -11,6 +11,7 @@ import ( "fmt" "iter" "slices" + "strings" ) // Deque is a double-ended queue. The zero value is ready for use. @@ -190,3 +191,17 @@ func (q *Deque[T]) PopAll() iter.Seq[T] { } } } + +// String displays the deque as a string, using fmt.Sprint to show each element. +func (q *Deque[T]) String() string { + buf := new(strings.Builder) + buf.WriteString("[") + for i := range len(q.buf) { + if i > 0 { + buf.WriteString(" ") + } + fmt.Fprint(buf, q.buf[:cap(q.buf)][q.toPhysicalIdx(i)]) + } + buf.WriteString("]") + return buf.String() +} diff --git a/deque_test.go b/deque_test.go index d3ea63c..27ae232 100644 --- a/deque_test.go +++ b/deque_test.go @@ -285,3 +285,15 @@ func TestPopAll(t *testing.T) { }) } } + +func TestString(t *testing.T) { + t.Parallel() + + in := []int{1, 2, 3, 4, 5} + q := From(in) + const want = "[1 2 3 4 5]" + got := q.String() + if got != want { + t.Errorf("%d: String() = %q, want %q", in, got, want) + } +} |
