From 1698ae2bb19c0a108e337ea292cbef42bf002805 Mon Sep 17 00:00:00 2001 From: xushiwei Date: Sun, 25 Feb 2024 23:37:54 +0800 Subject: [PATCH 1/2] stringutil: NewBuilderSize --- stringutil/build.go | 7 ++++++- stringutil/string_test.go | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/stringutil/build.go b/stringutil/build.go index 38b82a9..00def6f 100644 --- a/stringutil/build.go +++ b/stringutil/build.go @@ -24,7 +24,12 @@ type Builder struct { } // NewBuilder creates a new Builder object. -func NewBuilder(ncap int) *Builder { +func NewBuilder(b []byte) *Builder { + return &Builder{b: b} +} + +// NewBuilderSize creates a new Builder object whose buffer has at least the specified size. +func NewBuilderSize(ncap int) *Builder { return &Builder{b: make([]byte, 0, ncap)} } diff --git a/stringutil/string_test.go b/stringutil/string_test.go index 168d335..9415d10 100644 --- a/stringutil/string_test.go +++ b/stringutil/string_test.go @@ -29,10 +29,10 @@ func TestConcat(t *testing.T) { } func TestBuild(t *testing.T) { - if ret := NewBuilder(0).Build(); ret != "" { + if ret := NewBuilder(nil).Build(); ret != "" { t.Fatal("NewBuilder(0):", ret) } - if ret := NewBuilder(16).Add("1").AddByte('2', '3').AddByte('!').Build(); ret != "123!" { + if ret := NewBuilderSize(16).Add("1").AddByte('2', '3').AddByte('!').Build(); ret != "123!" { t.Fatal("TestBuild:", ret) } } From 22936bfbd9443bdb72aa3a4d9ee7092d8ef6969e Mon Sep 17 00:00:00 2001 From: xushiwei Date: Sun, 25 Feb 2024 23:47:39 +0800 Subject: [PATCH 2/2] stringutil.Concat: len(parts) == 1 --- stringutil/concat.go | 3 +++ stringutil/string_test.go | 3 +++ 2 files changed, 6 insertions(+) diff --git a/stringutil/concat.go b/stringutil/concat.go index 7944b01..007b228 100644 --- a/stringutil/concat.go +++ b/stringutil/concat.go @@ -18,6 +18,9 @@ package stringutil // Concat concatenates parts of a string together. func Concat(parts ...string) string { + if len(parts) == 1 { + return parts[0] + } n := 0 for _, part := range parts { n += len(part) diff --git a/stringutil/string_test.go b/stringutil/string_test.go index 9415d10..81e9b5e 100644 --- a/stringutil/string_test.go +++ b/stringutil/string_test.go @@ -23,6 +23,9 @@ import ( ) func TestConcat(t *testing.T) { + if ret := Concat("1"); ret != "1" { + t.Fatal("Concat(1):", ret) + } if ret := Concat("1", "23", "!"); ret != "123!" { t.Fatal("Concat:", ret) }