format

package
v1.21.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 24, 2023 License: MIT Imports: 2 Imported by: 0

Documentation

Overview

パッケージformatはGoソースコードの標準的なフォーマットを実装します。

Goソースコードのフォーマットは時間とともに変化するため、 一貫したフォーマットに依存するツールは、このパッケージを使う代わりに特定のバージョンのgofmtバイナリを実行する必要があります。 その方法で、フォーマットが安定し、ツールをgoftmtの変更ごとに再コンパイルする必要がなくなります。

たとえば、このパッケージを直接使用するプレサブミットチェックは、 開発者が使用しているGoのバージョンによって異なる動作をするため、不安定になる可能性があります。

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Node

func Node(dst io.Writer, fset *token.FileSet, node any) error

Nodeはソースコードを標準的なgofmtスタイルに整形し、結果をdstに書き込みます。

nodeの型は*ast.File、*printer.CommentedNode、[]ast.Decl、[]ast.Stmtのいずれかである必要があります。 もしくはast.Expr、ast.Decl、ast.Spec、ast.Stmtと互換性のある代入可能な型である必要があります。 Nodeはnodeを変更しません。部分的なソースファイルを表すノードの場合、 (例えば、nodeが*ast.Fileでない場合や*printer.CommentedNodeが*ast.Fileを包んでいない場合)インポートはソートされません。

関数は早期に(結果が完全に書き込まれる前に)戻って、 正しくないASTのためにフォーマットエラーを返す場合があります。

Example
package main

import (
	"github.com/shogo82148/std/bytes"
	"github.com/shogo82148/std/fmt"
	"github.com/shogo82148/std/go/format"
	"github.com/shogo82148/std/go/parser"
	"github.com/shogo82148/std/go/token"
	"github.com/shogo82148/std/log"
)

func main() {
	const expr = "(6+2*3)/4"

	// parser.ParseExprは引数を解析し、対応するast.Nodeを返します。
	node, err := parser.ParseExpr(expr)
	if err != nil {
		log.Fatal(err)
	}

	// ノード用のFileSetを作成します。ノードは実際のソースファイルから
	// 来ないため、fsetは空になります。
	fset := token.NewFileSet()

	var buf bytes.Buffer
	err = format.Node(&buf, fset, node)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Println(buf.String())

}
Output:

(6 + 2*3) / 4

func Source

func Source(src []byte) ([]byte, error)

この関数は、ソースコードが正規のgofmtスタイルで書かれていると仮定して、 ソースコードを変換し結果を返します。エラーが発生した場合はそれも返されます。 srcは構文的に正しいGoのソースファイル、またはGoの宣言または文のリストであることが期待されます。

srcが部分的なソースファイルの場合、srcの先頭と末尾のスペースが結果に適用されます (つまり、先頭と末尾のスペースがsrcと同じになるように)。 また、結果はsrcのコードを含む最初の行と同じだけインデントされます。 部分的なソースファイルでは、インポートステートメントはソートされません。

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL