ホームページ > バックエンド開発 > Golang > Golang のテンプレート パッケージ実践ガイド: テンプレート エンジンを徹底的に習得する

Golang のテンプレート パッケージ実践ガイド: テンプレート エンジンを徹底的に習得する

PHPz
リリース: 2023-07-19 10:07:54
オリジナル
1887 人が閲覧しました

Golang の Template パッケージ実践ガイド: テンプレート エンジンの詳細な習得

はじめに:
Golang の Template パッケージは、テキスト出力を生成するための強力で柔軟なテンプレート エンジンです。これは、データをテンプレートと組み合わせて再利用可能なテキストまたは HTML スニペットを生成するためのシンプルかつ直感的な方法を提供します。この記事では、基本的な使用法、テンプレート定義、データ転送、カスタム関数など、Golang の Template パッケージについて詳しく説明し、コード例を示して詳細に説明します。

1. 基本的な使用法
1.1 Template パッケージをインポートする
Template パッケージを使用する前に、まずそれをインポートする必要があります。次のコードを使用して、Template パッケージをインポートできます。

import "text/template"
ログイン後にコピー

1.2 テンプレートの作成
まず、template.New() 関数を使用して、新しいテンプレート オブジェクトを作成します。をクリックし、テンプレート名を指定します。コード例は次のとおりです。

t := template.New("myTemplate")
ログイン後にコピー

1.3 テンプレートを解析する
次に、template.Parse() メソッドを使用してテンプレートを解析し、そのコンテンツをロードする必要があります。テンプレートをテンプレート オブジェクトに追加します。コード例は次のとおりです。

t, err := t.Parse("Hello, {{.}}!")
ログイン後にコピー

1.4 テンプレートのレンダリング
テンプレートが正常に解析されたら、template.Execute() メソッドを使用してテンプレートをレンダリングし、データを出力用のテンプレートにコピーします。コード例は次のとおりです:

err = t.Execute(os.Stdout, "World")
ログイン後にコピー

2. テンプレート定義
2.1 基本プレースホルダー
テンプレートでは、{{.}} をプレースホルダーとして使用して表すことができます。現在のデータオブジェクト。 Execute() メソッドを実行するときに、データ オブジェクトをテンプレートに渡すことができ、テンプレートはこのデータ オブジェクトをプレースホルダーに埋めます。コード例は次のとおりです。

t, err := template.New("myTemplate").Parse("Hello, {{.}}!")
err = t.Execute(os.Stdout, "World") // 输出:Hello, World!
ログイン後にコピー

2.2 フィールドの使用
単純なプレースホルダーに加えて、フィールドを通じてデータ オブジェクトの特定のプロパティにアクセスすることもできます。テンプレートでは、. を使用して現在のデータ オブジェクトを表し、. の後にフィールド名を使用してデータ オブジェクトのプロパティにアクセスできます。コード例は次のとおりです:

type User struct {
    Name string
    Age  int
}

t, err := template.New("myTemplate").Parse("Name: {{.Name}}, Age: {{.Age}}")
user := User{Name: "Tom", Age: 18}
err = t.Execute(os.Stdout, user) // 输出:Name: Tom, Age: 18
ログイン後にコピー

3. データ転送
単一のデータ オブジェクトを直接転送することに加えて、map や # などの構造を通じて複数のデータを転送することもできます。 ##スライスオブジェクト。

3.1 マップの使用

マップを使用してデータ オブジェクトを渡す場合、キーを通じて対応する値にアクセスできます。コード例は次のとおりです。

t, err := template.New("myTemplate").Parse("Name: {{.Name}}, Age: {{.Age}}")
data := map[string]interface{}{
    "Name": "Tom",
    "Age":  18,
}
err = t.Execute(os.Stdout, data) // 输出:Name: Tom, Age: 18
ログイン後にコピー

3.2 スライスの使用

スライスを使用して複数のデータ オブジェクトを渡す場合、範囲反復子を使用して各データ オブジェクトを走査できます。コード例は次のとおりです:

t, err := template.New("myTemplate").Parse("{{range .}}{{.}},{{end}}")
data := []string{"apple", "banana", "orange"}
err = t.Execute(os.Stdout, data) // 输出:apple,banana,orange,
ログイン後にコピー

4. カスタム関数

Golang のテンプレート パッケージは、テンプレート内でいくつかのカスタム論理操作を実行するために使用されるカスタム関数もサポートしています。

4.1 カスタム関数の登録

まず、
template.Funcs() メソッドを使用してカスタム関数を登録する必要があります。コード例は次のとおりです。

func formatName(name string) string {
    return "Mr. " + name
}

t := template.New("myTemplate").
    Funcs(template.FuncMap{"formatName": formatName}).
    Parse("Name: {{. | formatName}}")
data := "Tom"
err := t.Execute(os.Stdout, data) // 输出:Name: Mr. Tom
ログイン後にコピー

4.2 カスタム関数の呼び出し

テンプレートでは、
| 演算子を使用してカスタム関数を呼び出し、データ オブジェクトをテンプレートをパラメータとしてカスタム関数を与えます。コード例は次のとおりです:

func double(x int) int {
    return x * 2
}

t, err := template.New("myTemplate").
    Funcs(template.FuncMap{"double": double}).
    Parse("Double of 5 is {{double 5}}")
err = t.Execute(os.Stdout, nil) // 输出:Double of 5 is 10
ログイン後にコピー
要約:

この記事の紹介とコード例を通じて、読者は Golang の Template パッケージについてより深く理解できると思います。 Template パッケージは、再利用可能なテキストまたは HTML フラグメントを簡単に生成できる、柔軟で強力なテンプレート エンジンです。実際の開発では、テンプレート定義やデータ転送、カスタム関数などの機能をニーズに応じて柔軟に利用することができ、開発効率の向上とコード実装の簡素化を実現します。読者がこの記事のガイドを通じて Golang の Template パッケージの使い方をよりよくマスターできることを願っています。

以上がGolang のテンプレート パッケージ実践ガイド: テンプレート エンジンを徹底的に習得するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート