code: func WriteArray(lst []interface{}, buf *goetty.ByteBuf) {
  	buf.WriteByte('*')
  	if len(lst) == 0 {
  		buf.Write(NullArray)
  		buf.Write(Delims)
  	} else {
  		buf.Write(goetty.StringToSlice(strconv.Itoa(len(lst))))
  		buf.Write(Delims)
  
  		for i := 0; i < len(lst); i++ {
  			switch v := lst[i].(type) {
  			case []interface{}:
  				WriteArray(v, buf)
  			case [][]byte:
  				WriteSliceArray(v, buf)
  			case []byte:
  				WriteBulk(v, buf)
  			case nil:
  				WriteBulk(nil, buf)
  			case int64:
  				WriteInteger(v, buf)
  			case string:
  				WriteStatus(goetty.StringToSlice(v), buf)
  			case error:
  				WriteError(goetty.StringToSlice(v.Error()), buf)
  			default:
  				panic(fmt.Sprintf("invalid array type %T %v", lst[i], v))
  			}
  		}
  	}
  }
docs: // WriteArray write array resp