Repository: kubernetes/klog (go)

Issue:
[]byte will use +%v through InfoS.
/kind bug

**What steps did you take and what happened:**
[A clear and concise description of what the bug is.]

```
klog.InfoS("[]byte", "b1", []byte("hello world"))
```
print:
I0508 19:35:13.452661   57319 testKlog.go:11] "[]byte" b1=[104 101 108 108 111 32 119 111 114 108 100]

**What did you expect to happen:**
I0508 19:37:01.473191    2045 testKlog.go:11] "[]byte" b1="hello world"


**Anything else you would like to add:**
[Miscellaneous information that will assist in solving the issue.]
part of https://github.com/kubernetes/kubernetes/issues/101714
As k8s conducts structured log migration, `InfoS `is used more and more, but` []byte`, usually cooperates with %q `before `the migration, is it necessary to submit a PR so that []byte uses %q in InfoS?
Currently in InfoS, []byte uses %+v.
https://github.com/kubernetes/klog/blob/0cc9b8363efc89db73313bf618deeff8964c4a86/klog.go#L832
If the idea is approved, I will do it, otherwise I will probably continue to use `klog.InfoS("[]byte", "b1", string([]byte("hello world")))`.


Pull request description:
Fix byte array display in InfoS and ErrorS
<!--  Thanks for sending a pull request!  Here are some tips for you:
1. If this is your first time, read our contributor guidelines https://git.k8s.io/community/contributors/guide/pull-requests.md#the-pull-request-submit-process and developer guide https://git.k8s.io/community/contributors/devel/development.md#development-guide
2. If you want *faster* PR reviews, read how: https://git.k8s.io/community/contributors/guide/pull-requests.md#best-practices-for-faster-reviews
3. Follow the instructions for writing a release note: https://git.k8s.io/community/contributors/guide/release-notes.md
4. If the PR is unfinished, see how to mark it: https://git.k8s.io/community/contributors/guide/pull-requests.md#marking-unfinished-pull-requests
5. If this PR changes image versions, please title this PR "Bump <image name> from x.x.x to y.y.y."
-->

**What this PR does / why we need it**:
Fix byte array display in InfoS and ErrorS
**Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*:
Fixes #236 

**Special notes for your reviewer**:

_Please confirm that if this PR changes any image versions, then that's the sole change this PR makes._

**Release note**:
<!--  Write your release note:
1. Enter your extended release note in the below block. If the PR requires additional action from users switching to the new release, include the string "action required".
2. If no release note is required, just write "NONE".
-->
```release-note

```

Patch:
diff --git a/klog.go b/klog.go
index f04b85d..c0080c0 100644
--- a/klog.go
+++ b/klog.go
@@ -825,6 +825,8 @@ func kvListFormat(b *bytes.Buffer, keysAndValues ...interface{}) {
 		switch v.(type) {
 		case string, error:
 			b.WriteString(fmt.Sprintf("%s=%q", k, v))
+		case []byte:
+			b.WriteString(fmt.Sprintf("%s=%+q", k, v))
 		default:
 			if _, ok := v.(fmt.Stringer); ok {
 				b.WriteString(fmt.Sprintf("%s=%q", k, v))


Test patch:
diff --git a/klog_test.go b/klog_test.go
index b7f0123..c0370c7 100644
--- a/klog_test.go
+++ b/klog_test.go
@@ -1067,6 +1067,14 @@ func TestKvListFormat(t *testing.T) {
 			keysValues: []interface{}{"pod", "kubedns", "values", []string{"deployment", "svc", "configmap"}},
 			want:       " pod=\"kubedns\" values=[deployment svc configmap]",
 		},
+		{
+			keysValues: []interface{}{"pod", "kubedns", "bytes", []byte("test case for byte array")},
+			want:       " pod=\"kubedns\" bytes=\"test case for byte array\"",
+		},
+		{
+			keysValues: []interface{}{"pod", "kubedns", "bytes", []byte("��=� ⌘")},
+			want:       " pod=\"kubedns\" bytes=\"\\ufffd\\ufffd=\\ufffd \\u2318\"",
+		},
 		{
 			keysValues: []interface{}{"pod", "kubedns", "maps", map[string]int{"three": 4}},
 			want:       " pod=\"kubedns\" maps=map[three:4]",