aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Pike <r@golang.org>2011-07-04 11:45:31 +1000
committerRob Pike <r@golang.org>2011-07-04 11:45:31 +1000
commitdb0e3580225ef11a3a8be0de608cb56ddd4aee55 (patch)
treeac59271666fba536f068ca5cbf3cd469f63c0655
parent8c7a73bbbba1c6a374d3ab334e378299c6c4236b (diff)
downloadgo-db0e3580225ef11a3a8be0de608cb56ddd4aee55.tar.gz
go-db0e3580225ef11a3a8be0de608cb56ddd4aee55.zip
reflect: allow Len on String values.
It's probably just an oversight that it doesn't work, perhaps caused by analogy with Cap. R=golang-dev, dsymonds CC=golang-dev https://golang.org/cl/4634125
-rw-r--r--src/pkg/reflect/value.go4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/pkg/reflect/value.go b/src/pkg/reflect/value.go
index 889d9455bd..bfeb3267c7 100644
--- a/src/pkg/reflect/value.go
+++ b/src/pkg/reflect/value.go
@@ -933,7 +933,7 @@ func (v Value) Kind() Kind {
}
// Len returns v's length.
-// It panics if v's Kind is not Array, Chan, Map, or Slice.
+// It panics if v's Kind is not Array, Chan, Map, Slice, or String.
func (v Value) Len() int {
iv := v.internal()
switch iv.kind {
@@ -945,6 +945,8 @@ func (v Value) Len() int {
return int(maplen(iv.word))
case Slice:
return (*SliceHeader)(iv.addr).Len
+ case String:
+ return (*StringHeader)(iv.addr).Len
}
panic(&ValueError{"reflect.Value.Len", iv.kind})
}