From e6c6684c25be554b99a7f189f12614ccda4ae25b Mon Sep 17 00:00:00 2001 From: Tnze Date: Sat, 22 Jan 2022 21:39:40 +0800 Subject: [PATCH] fix #148 --- chat/message.go | 12 ++++++------ chat/message_test.go | 4 +++- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/chat/message.go b/chat/message.go index c0af8ed..0efeb5c 100644 --- a/chat/message.go +++ b/chat/message.go @@ -107,15 +107,15 @@ func (m Message) WriteTo(w io.Writer) (int64, error) { func (m Message) Append(extraMsg ...Message) Message { origLen := len(m.Extra) finalLen := origLen + len(extraMsg) + var extra []Message if cap(m.Extra) < len(m.Extra)+len(extraMsg) { - // pre expansion - extra := make([]Message, finalLen) + extra = make([]Message, finalLen) copy(extra, m.Extra) - m.Extra = extra - } - for _, v := range extraMsg { - m.Extra = append(m.Extra, v) + } else { + extra = m.Extra[:finalLen] } + copy(extra[origLen:], extraMsg) + m.Extra = extra return m } diff --git a/chat/message_test.go b/chat/message_test.go index 6c08fda..a8984b4 100644 --- a/chat/message_test.go +++ b/chat/message_test.go @@ -123,8 +123,10 @@ func ExampleMessage_Append() { Append(chat.Message{Text: "22222"}). Append(chat.Message{Text: "333333"}). Append(chat.Message{Text: "4444444"}) - fmt.Print(msg) + fmt.Println(msg) + fmt.Println("debug: extra length:", len(msg.Extra)) // Output: 1111222223333334444444 + // debug: extra length: 3 } func ExampleTranslateMsg() {