ホームページ  >  記事  >  バックエンド開発  >  Go でテンプレート範囲内の最後の項目を検出するにはどうすればよいですか?

Go でテンプレート範囲内の最後の項目を検出するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-09 03:46:02484ブラウズ

How to Detect the Last Item in a Template Range in Go?

テンプレート範囲内の最後の項目の検出

テンプレートを使用する場合、テンプレート範囲内の最後の要素を決定する必要がある状況が発生することがあります。範囲。これは、現在の項目の位置に基づいて出力をカスタマイズする場合に特に便利です。

次のテンプレートを検討してください:

{{range $i, $e := .SomeField}}
    {{if $i}}, {{end}}
    $e.TheString
{{end}}

このテンプレートは次のような出力を生成します:

one, two, three

ただし、出力を次のように変更したい場合は、

one, two, and three

方法が必要です。現在の項目が範囲内の最後の要素であることを検出します。

実装

変数を使用して配列の長さと現在のインデックスを保存する従来のアプローチでは、テンプレートで効果的に機能します。幸いなことに、カスタム テンプレート関数を使用した解決策があります。

package main

import (
    "os"
    "reflect"
    "text/template"
)

var fns = template.FuncMap{
    "last": func(x int, a interface{}) bool {
        return x == reflect.ValueOf(a).Len() - 1
    },
}

この関数は、指定されたインデックス x が配列の長さから 1 を引いたものに等しいかどうかをチェックし、それが最後の要素であることを示します。

使用法

テンプレートでこの関数を使用するには、次のように呼び出します。

{{range  $i, $e := .}}{{if $i}}, {{end}}{{if last $i $}}and {{end}}{{$e}}{{end}}.`

このテンプレートは次の目的の出力を生成します:

one, two, and three

追加の最適化

代わりに len 関数を使用することもできます反省することなく同じ結果を達成できるため、このソリューションの効率がさらに向上します。

以上がGo でテンプレート範囲内の最後の項目を検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。