При создании глобальных переменных в пакете html/template Go крайне важно понимать ограничения области действия. Согласно документации пакета, переменные, определенные в шаблоне, имеют ограниченную область действия, простирающуюся до конца управляющей структуры (например, if, with, range), в которой они объявлены.
Рассмотрим следующий код HTML/шаблона:
{{if .UserData}} {{$currentUserId := .UserData.UserId}} [<a href="#ask_question">Inside {{$currentUserId}}</a>] {{else}} {{$currentUserId := 0}} {{end}} [<a href="#ask_question">outside {{$currentUserId}}</a>]
Этот код предназначен для отображения текущего идентификатора пользователя внутри блока if и 0 вне блока. Однако результат показывает 0 в обоих местах из-за ограниченной области действия $currentUserId.
Go 1.11 представило поддержку изменения значений переменных шаблона. Чтобы инициализировать переменную, используйте :=, например:
{{$currentUserId := 0}}
Чтобы обновить ее значение, используйте =, например:
{{$currentUserId = .UserData.UserId}}
Изменяя переменную, определенную вне блока if, к изменению можно получить доступ как внутри, так и за пределами блока.
Если изменение глобальных переменных не подходит, рассмотрите следующие альтернативы:
Используя эти решения, вы можете создавать и изменять глобальные переменные в пакете html/template Go, обеспечивая соответствующую область видимости переменных и достигая желаемой функциональности в вашем шаблоне. шаблоны.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3