ソースコードはUTF-8でエンコードされたUnicodeテキストです。テキストは正規化されていないので、1つのアクセント付きコードポイントは、アクセントと文字を組み合わせて作られた同じ文字とは区別され、それらは2つのコードポイントとして扱われます。『''[https://golang.org/ref/spec The Go Programming Language Specification]''』では、簡単のために、原文中のUnicodeコードポイントを参照するために、修飾語ではない"character"を使用します。
例えば、大文字と小文字は異なる文字です。
実装上の制限として、他のツールとの互換性のために、コンパイラーはソーステキスト中のNUL文字（NUL character; U+0000）を許可しないことがあります。
また、実装上の制限として、他のツールとの互換性のため、コンパイラーはUTF-8でエンコードされたバイトオーダーマーク（BOM; U+FEFF）がソーステキスト内で最初のUnicodeコードポイントである場合、それを無視してもかまいません。ただし、バイトオーダーマークは、ソース内の他の場所では許可されません。
----
言語仕様書で明確に指定されているように、ソースコードの文字コードはUTF-8エンコードされていることが規定されています。したがって、それ以外の文字コードを使用することは仕様に反するものです。
UTF-8エンコードはソースコードに対して規定されていますが、他の文字コードでエンコードされたファイルの読み書きには、専用のパッケージで定義された関数を使用する必要があります。
日本語:"[https://pkg.go.dev/golang.org/x/text/encoding/japanese golang.org/x/text/encoding/japanese]" -- EUCJP, ISO2022JP, ShiftJIS
中文繁體:"[https://pkg.go.dev/golang.org/x/text/encoding/traditionalchinese golang.org/x/text/encoding/traditionalchinese]" -- Big5
パッケージ "golang.org/x/text/encoding/japanese" のインストール:
PowerShell 7.1.4
Copyright (c) Microsoft Corporation.
https://aka.ms/powershell
Type 'help' to get help.
PS C:\Users\user1> go get -v golang.org/x/text/encoding/japanese
go: downloading golang.org/x/text v0.3.7
golang.org/x/text/encoding/internal/identifier
golang.org/x/text/transform
golang.org/x/text/encoding
golang.org/x/text/encoding/internal
golang.org/x/text/encoding/japanese
PS C:\Users\user1>
ShiftJISでエンコードされたファイルを（別の）ファイルにEUC-JPエンコーディングで書き出す関数:
package conversion
import (
	"io"
	"golang.org/x/text/encoding/japanese"
	"golang.org/x/text/transform"
)
//Conversion
func Conversion(inStream io.Reader, outStream io.Writer) error {
	// ストリームからの読み込み(Shift-JIS → UTF-8)
	transform.NewReader(inStream, japanese.ShiftJIS.NewDecoder())
	// ストリームへの書き込み(UTF-8 → EUC-JP)
	transform.NewWriter(outStream, japanese.EUCJP.NewEncoder())
	// コピー
	if _, err := io.Copy(writer, reader); err != nil {
		return err
	}
	return nil
}
以下の用語は、特定のUnicode文字クラスを示すために使用されます。
文字:
newline = (* UnicodeコードポイントU+000A *) ;
unicode_char = (* newline を除く任意の Unicode コードポイント *) ;
unicode_letter = (* "Letter "に分類されるUnicodeコードポイント *) ;
unicode_digit = (* "Number, decimal digit" に分類される Unicode コードポイント *) ;
The Unicode Standard 8.0の4.5項「General Category」では、一連の文字カテゴリが定義されています。
Goでは、LetterカテゴリのLu、Ll、Lt、Lm、Loのいずれかに含まれるすべての文字をUnicodeの文字として扱い、NumberカテゴリのNdに含まれる文字をUnicodeの数字として扱います。
アンダースコア文字「_」（U+005F）は、文字とみなされます。
文字と数字:
letter = unicode_letter | "_" ;
decimal_digit = "0" ... "9" ;
binary_digit = "0" | "1" ;
octal_digit   = "0" … "7" ;
hex_digit = "0" ... "9" | "A" ... "F" | "a" ... "f" ;