2 回答

TA贡献1851条经验 获得超4个赞
*input = buf.Bytes()你之前return err在Append功能中失踪了
func Append(input *[]byte, appendee string) (err error) {
buf := bytes.NewBuffer(*input)
if _, err := buf.WriteString(appendee); err != nil {
log.Println(err)
}
*input = buf.Bytes()
return err
}
看看 go playground 上的工作代码。

TA贡献1847条经验 获得超11个赞
您缺少一行:
package main
import (
"bytes"
"fmt"
"log"
)
// Using your function
func Append(input *[]byte, appendee string) error {
buf := bytes.NewBuffer(*input)
if _, err := buf.WriteString(appendee); err != nil {
log.Println(err)
return err
}
// You are missing this one
*input = buf.Bytes()
return nil
}
// Using another approach
func Append2(input *[]byte, a string) {
sb := []byte(a)
*input = append(*input, sb...)
}
// As pointed by @cerise-limón, is no necessary to perform type conversion from string to byte during the append
func Append3(input *[]byte, a string) {
*input = append(*input, a...)
}
func main() {
var (
test string = "this is a test\nThis test is short\nBut longer tests would work also\n"
toAppend string = "This is an appended line\n"
)
b := []byte(test)
fmt.Println(b)
if err := Append(&b, "1) "+toAppend); err != nil {
fmt.Printf("oops: %s\n", err.Error())
}
fmt.Println(string(b))
Append2(&b, "2) "+toAppend)
fmt.Println(string(b))
Append3(&b, "3) "+toAppend)
fmt.Println(string(b))
}
- 2 回答
- 0 关注
- 100 浏览
添加回答
举报