ref: 4c04d7101add03f85b770b8bf7ee3fd3398cb7c0
parent: ddd8c77938e20ee4d43c98704197d9b63a903b32
author: Bjørn Erik Pedersen <[email protected]>
date: Mon Oct 12 13:58:40 EDT 2015
Fix In func given an []interface{} Fixes #1486
--- a/tpl/template_funcs.go
+++ b/tpl/template_funcs.go
@@ -330,6 +330,10 @@
case reflect.Array, reflect.Slice:
for i := 0; i < lv.Len(); i++ {
lvv := lv.Index(i)
+ lvv, isNil := indirect(lvv)
+ if isNil {
+ continue
+ }
switch lvv.Kind() {
case reflect.String:
if vv.Type() == lvv.Type() && vv.String() == lvv.String() {
--- a/tpl/template_funcs_test.go
+++ b/tpl/template_funcs_test.go
@@ -354,9 +354,14 @@
expect bool
}{
{[]string{"a", "b", "c"}, "b", true},
+ {[]interface{}{"a", "b", "c"}, "b", true},
+ {[]interface{}{"a", "b", "c"}, "d", false},
{[]string{"a", "b", "c"}, "d", false},
{[]string{"a", "12", "c"}, 12, false},
{[]int{1, 2, 4}, 2, true},
+ {[]interface{}{1, 2, 4}, 2, true},
+ {[]interface{}{1, 2, 4}, nil, false},
+ {[]interface{}{nil}, nil, false},
{[]int{1, 2, 4}, 3, false},
{[]float64{1.23, 2.45, 4.67}, 1.23, true},
{[]float64{1.234567, 2.45, 4.67}, 1.234568, false},