From e268038a68839e2e5d506b45560c7ea79c5ce509 Mon Sep 17 00:00:00 2001 From: itchyny Date: Thu, 3 Sep 2020 20:07:08 +0900 Subject: [PATCH] Avoid strings.Split to reduce allocation --- decode.go | 7 ++++--- encode.go | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/decode.go b/decode.go index 1e38fe5..62fb0c0 100644 --- a/decode.go +++ b/decode.go @@ -102,9 +102,10 @@ func Unmarshal(data []byte, v interface{}) error { ft := t.Field(i) fv := rv.Field(i) - tag := ft.Tag.Get("ltsv") - tags := strings.Split(tag, ",") - key := tags[0] + key := ft.Tag.Get("ltsv") + if i := strings.IndexByte(key, ','); i >= 0 { + key = key[:i] + } if key == "-" { continue } diff --git a/encode.go b/encode.go index 6e80098..44c9cb4 100644 --- a/encode.go +++ b/encode.go @@ -66,9 +66,10 @@ func makeStructWriter(v reflect.Value) fieldWriter { writers := make([]fieldWriter, n) for i := 0; i < n; i++ { ft := t.Field(i) - tag := ft.Tag.Get("ltsv") - tags := strings.Split(tag, ",") - key := tags[0] + key := ft.Tag.Get("ltsv") + if i := strings.IndexByte(key, ','); i >= 0 { + key = key[:i] + } if key == "-" { continue }