ref: 4c04d7101add03f85b770b8bf7ee3fd3398cb7c0
parent: ddd8c77938e20ee4d43c98704197d9b63a903b32
author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
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},--
⑨