()
| 212 | } |
| 213 | |
| 214 | func (v Value) ContainerLength() (int, error) { |
| 215 | switch v.Type().(type) { |
| 216 | case *TypeSet, *TypeArray: |
| 217 | if v.IsNull() { |
| 218 | return 0, nil |
| 219 | } |
| 220 | var n int |
| 221 | for it := v.ContainerIter(); !it.Done(); { |
| 222 | it.Next() |
| 223 | n++ |
| 224 | } |
| 225 | return n, nil |
| 226 | case *TypeMap: |
| 227 | if v.IsNull() { |
| 228 | return 0, nil |
| 229 | } |
| 230 | var n int |
| 231 | for it := v.ContainerIter(); !it.Done(); { |
| 232 | it.Next() |
| 233 | it.Next() |
| 234 | n++ |
| 235 | } |
| 236 | return n, nil |
| 237 | default: |
| 238 | return -1, ErrNotContainer |
| 239 | } |
| 240 | } |
| 241 | |
| 242 | // IsNull returns true when v's underlying type is TypeNull. |
| 243 | func (v Value) IsNull() bool { |
no test coverage detected