Вызов метода массива из шаблона golang - PullRequest
1 голос
/ 31 марта 2019

Итак, в моем main.go есть структура и метод, которые я могу вызвать изнутри main.go без проблем. Представьте, что это так:

type Test struct {
    val1 float32
    val2 float32
}

func (t Test) callMethod() float32 {
    return t.val1 / t.val2
}

Я называю шаблон следующим образом, и в качестве данных я даю массив структур Test, например:

var testvar1 Test
var testvar2 Test
var teststructs [] Test
teststructs = append(teststructs, testvar1)
teststructs = append(teststructs, testvar2)
tpl.ExecuteTemplate(w, "testpage.gohtml", teststructs)

Внутри шаблона я пытаюсь назвать callMethod вот так

{{range .}}
    {{ .callMethod }}
{{end}}

Но я получаю следующую ошибку:

выполнение «testpage.gohtml» в <.callMethod>: невозможно оценить поле callMethod в типе main.Test

Есть ли у кого-нибудь идея, что я делаю неправильно, и есть решение для этого? Я пытаюсь исправить это уже много часов, и я очень расстроен этим моментом.

1 Ответ

0 голосов
/ 31 марта 2019

В вашей Test структуре нет экспортируемых полей / методов, т.е. поля / методы в структуре, используемые в шаблоне, должны начинаться с заглавной буквы.

Обновите имя метода до CallMethod

func (t Test) CallMethod() float32 {
    return t.val1 / t.val2
}

и шаблон:

const tmpl = `
{{range .}}
   {{.CallMethod}}
{{end}}
`

см. Код https://play.golang.org/p/Vud7ipJ_Vyr

...