[インデックス 10459] ファイルの概要
このコミットでは、Go言語の標準ライブラリである html/template
、net/http
、websocket
パッケージ内のコメントに記載されているインポートパスが修正されています。具体的には、src/pkg/html/template/doc.go
、src/pkg/net/http/server.go
、src/pkg/websocket/client.go
、src/pkg/websocket/server.go
の4つのファイルが変更されました。これらの変更は、コードの機能には影響を与えず、ドキュメントや例示コードの正確性を保つためのものです。
コミット
commit 5b9d7825edeca72eae2fe11bf3fccb314ba23ce6
Author: Lucio De Re <lucio.dere@gmail.com>
Date: Fri Nov 18 18:33:44 2011 -0500
html/template, net/http, websocket: fix import paths in comments
R=golang-dev
CC=golang-dev, rsc
https://golang.org/cl/5411048
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/5b9d7825edeca72eae2fe11bf3fccb314ba23ce6
元コミット内容
html/template
、net/http
、websocket
パッケージ内のコメントに記載されているインポートパスを修正しました。
変更の背景
このコミットは、Go言語の標準ライブラリにおけるパッケージの再編成と命名規則の変更に対応するためのものです。Go言語は開発初期段階において、パッケージの構造や命名が頻繁に変更されていました。特に、http
パッケージが net/http
に、そして template
パッケージが text/template
や html/template
といったより具体的なパスに整理された時期がありました。
この変更の背景には、以下の目的があったと考えられます。
- 明確性の向上:
http
のような汎用的な名前ではなく、net/http
のようにnet
(ネットワーク関連) のサブパッケージであることを明示することで、パッケージの役割と位置付けをより明確にする。 - 衝突の回避:
template
のように一般的な名前のパッケージは、ユーザーが作成するパッケージ名と衝突する可能性がありました。text/template
やhtml/template
のように階層化することで、名前空間の衝突を避け、より整理された構造を提供する。 - 標準ライブラリの成熟: Go言語が成熟するにつれて、標準ライブラリの構造もより論理的でスケーラブルなものへと進化しました。このコミットは、その進化の過程で生じたドキュメントの不整合を修正するものです。
このコミット自体は機能的な変更ではなく、あくまで既存のコードコメント内のインポートパスを、当時の最新のパッケージ構造に合わせて更新することが目的でした。これにより、ドキュメントや例示コードが誤った情報を提供することを防ぎ、ユーザーが正しいインポートパスを使用できるようにガイドしています。
前提知識の解説
Go言語のパッケージとインポート
Go言語では、コードは「パッケージ」という単位で整理されます。パッケージは関連する機能の集合であり、他のパッケージからその機能を利用するためには import
キーワードを使ってインポートする必要があります。インポートパスは、通常、Goモジュールのルートからの相対パス、または標準ライブラリの場合は特定のパスで指定されます。
例:
import "fmt"
: 標準ライブラリの fmt
パッケージをインポート
import "github.com/user/repo/mypackage"
: 外部モジュールの mypackage
をインポート
Go言語の標準ライブラリの進化
Go言語は2009年に公開され、その後も活発に開発が続けられてきました。特に初期のバージョンでは、APIの安定化やパッケージ構造の最適化のために、既存のパッケージ名やパスが変更されることがありました。これは、言語設計者がより良い構造や命名規則を見つける過程で自然に起こる現象です。
このコミットが行われた2011年頃は、Go言語がバージョン1.0のリリースに向けて安定化を進めていた時期にあたります。この時期には、以下のようなパッケージ名の変更や整理が行われました。
http
からnet/http
: ネットワーク関連の機能はnet
パッケージの下に集約されることになり、HTTPプロトコルを扱うhttp
パッケージはnet/http
に移動しました。これにより、ネットワーク関連の機能がnet
という一貫した名前空間の下に配置され、より論理的な構造になりました。template
からtext/template
およびhtml/template
: テンプレートエンジンに関する機能は、テキストベースのテンプレートとHTMLベースのテンプレートで明確に分離されることになりました。これにより、それぞれtext/template
とhtml/template
という専用のパッケージが提供され、用途に応じた適切なテンプレートエンジンを選択できるようになりました。特にhtml/template
は、HTMLエスケープ処理を自動で行うことで、クロスサイトスクリプティング (XSS) などのセキュリティ脆弱性を防ぐ役割も担っています。
コメントの重要性
プログラミングにおいて、コメントはコードの意図、機能、使用方法などを説明するために非常に重要です。特に、例示コードを含むコメントは、そのコードを理解し、正しく使用するための手助けとなります。しかし、コード本体が変更されたにもかかわらずコメントが更新されない場合、コメントが誤った情報を提供し、ユーザーを混乱させる原因となります。このコミットは、まさにそのようなコメントの不整合を解消することを目的としています。
技術的詳細
このコミットの技術的な詳細は、Go言語のパッケージインポートパスの変更に集約されます。具体的には、以下の2つの主要な変更パターンが見られます。
-
import "template"
からimport "text/template"
への変更:- これは
src/pkg/html/template/doc.go
ファイルで確認できます。 - Go言語のテンプレートパッケージは、元々
template
という単一のパッケージとして提供されていました。しかし、テキスト出力用のテンプレートと、HTML出力でセキュリティ(XSS対策など)を考慮したテンプレートの2種類が必要になったため、それぞれtext/template
とhtml/template
に分割されました。 html/template
パッケージのドキュメント内の例示コードでは、HTMLテンプレートを扱うにもかかわらず、古いtemplate
パッケージをインポートしている記述があったため、これをtext/template
に修正しています。これは、html/template
がtext/template
の機能を拡張しているため、基本的なテンプレート操作の例としてはtext/template
を参照することが適切である、という意図が考えられます。
- これは
-
import "http"
からimport "net/http"
への変更:- これは
src/pkg/net/http/server.go
、src/pkg/websocket/client.go
、src/pkg/websocket/server.go
の各ファイルで確認できます。 - Go言語のネットワーク関連パッケージは、初期には
http
のようにトップレベルに配置されていましたが、後にnet
という親パッケージの下に整理されました。これにより、HTTPプロトコルを扱うパッケージはnet/http
というフルパスでインポートされるようになりました。 - この変更は、Goの標準ライブラリがより構造化され、ネットワーク関連の機能が
net
という共通の名前空間の下に集約されるという設計思想を反映しています。コメント内の例示コードも、この新しいインポートパスに合わせて更新されました。
- これは
これらの変更は、Go言語の標準ライブラリが進化し、より整理されたAPIを提供するための過程で生じたものです。コメントの修正は、この進化にドキュメントが追従し、ユーザーが常に最新かつ正確な情報にアクセスできるようにするための重要なメンテナンス作業と言えます。
コアとなるコードの変更箇所
diff --git a/src/pkg/html/template/doc.go b/src/pkg/html/template/doc.go
index 0324c9c0ee..570567e876 100644
--- a/src/pkg/html/template/doc.go
+++ b/src/pkg/html/template/doc.go
@@ -29,7 +29,7 @@ trusted, while Execute's data parameter is not. More details are provided below.
Example
- import "template"
+ import "text/template"
...
t, err := (&template.Set{}).Parse(`{{define "T"}}Hello, {{.}}!{{end}}`)
err = t.Execute(out, "T", "<script>alert('you have been pwned')</script>")
diff --git a/src/pkg/net/http/server.go b/src/pkg/net/http/server.go
index 7221d2508b..27040c7be5 100644
--- a/src/pkg/net/http/server.go
+++ b/src/pkg/net/http/server.go
@@ -1013,8 +1013,8 @@ func (srv *Server) Serve(l net.Listener) error {
// package main
//
// import (
-// "http"
// "io"
+// "net/http"
// "log"
// )
//
@@ -1044,8 +1044,8 @@ func ListenAndServe(addr string, handler Handler) error {
// A trivial example server is:
//
// import (
-// "http"
// "log"
+// "net/http"
// )
//
// func handler(w http.ResponseWriter, req *http.Request) {
diff --git a/src/pkg/websocket/client.go b/src/pkg/websocket/client.go
index 5dfd824e6e..89cdcda71a 100644
--- a/src/pkg/websocket/client.go
+++ b/src/pkg/websocket/client.go
@@ -72,8 +72,8 @@ A trivial example client:
package main
import (
-\t\t"http"
\t\t"log"
+\t\t"net/http"
\t\t"strings"
\t\t"websocket"
)
diff --git a/src/pkg/websocket/server.go b/src/pkg/websocket/server.go
index 57dc4fd1df..8320b032ea 100644
--- a/src/pkg/websocket/server.go
+++ b/src/pkg/websocket/server.go
@@ -60,8 +60,8 @@ A trivial example server:
package main
import (
-\t\t"http"
\t\t"io"
+\t\t"net/http"
\t\t"websocket"
)
コアとなるコードの解説
このコミットにおけるコードの変更は、すべてGoソースコード内のコメントブロック、特に例示コード内のインポートパスの修正に限定されています。実際のGoの実行コードやAPIの振る舞いには一切変更がありません。
-
src/pkg/html/template/doc.go
:- このファイルは
html/template
パッケージのドキュメント(doc.go
はGoのドキュメンテーションツールgo doc
が参照するファイル)です。 - 変更箇所は、
Example
セクション内のインポート文です。 - import "template"
が+ import "text/template"
に変更されています。これは、Goのテンプレートパッケージがtext/template
とhtml/template
に分割されたことに伴い、基本的なテンプレートの例としてはtext/template
をインポートするように修正されたものです。html/template
はtext/template
の上に構築されているため、基本的な機能を示す際にはtext/template
を参照するのが適切と判断されたと考えられます。
- このファイルは
-
src/pkg/net/http/server.go
:- このファイルは
net/http
パッケージのHTTPサーバー実装に関連するものです。 - 変更箇所は、
ListenAndServe
関数などのドキュメンテーションコメント内の例示コードです。 - import ("http")
が+ import ("net/http")
に変更されています。これは、GoのHTTPパッケージがhttp
からnet/http
に移動したことに対応する修正です。これにより、コメント内の例示コードが最新の正しいインポートパスを反映するようになりました。
- このファイルは
-
src/pkg/websocket/client.go
およびsrc/pkg/websocket/server.go
:- これらのファイルは、GoのWebSocketパッケージのクライアントとサーバーの実装に関連するものです。
- 変更箇所は、それぞれのファイル内の例示コードのコメントブロックです。
- import ("http")
が+ import ("net/http")
に変更されています。WebSocketプロトコルはHTTPの上に構築されているため、これらの例示コードでもHTTPパッケージ(net/http
)が使用されています。ここでも、HTTPパッケージのインポートパスの変更に合わせてコメントが更新されました。
これらの変更は、Go言語の標準ライブラリの進化と整理の過程で、ドキュメントの正確性を維持するために行われた、非常にクリーンな修正です。
関連リンク
- Go言語のコミット: https://github.com/golang/go/commit/5b9d7825edeca72eae2fe11bf3fccb314ba23ce6
- Gerrit Code Review (Go): https://golang.org/cl/5411048
参考にした情報源リンク
- Go言語の公式ドキュメント (現在のパッケージ構造): https://pkg.go.dev/
- Go言語の歴史と進化に関する情報 (一般的な知識として)
- Go言語のパッケージ命名規則に関する議論 (一般的な知識として)
- Go 1.0リリースノート (パッケージ変更の背景を理解するため)
- Go 1 Release Notes: https://go.dev/doc/go1 (特に "Standard library" セクション)
- Go言語の
text/template
とhtml/template
の違いに関する情報text/template
package: https://pkg.go.dev/text/templatehtml/template
package: https://pkg.go.dev/html/template
- Go言語の
net/http
パッケージに関する情報net/http
package: https://pkg.go.dev/net/http
- Go言語の
websocket
パッケージに関する情報 (このコミット時点では標準ライブラリの一部だったが、後に外部パッケージに移行)- Go言語のWebSocket実装は、Go 1.4で標準ライブラリから削除され、
golang.org/x/net/websocket
に移動しました。このコミット時点ではまだ標準ライブラリに存在していました。- Go 1.4 Release Notes: https://go.dev/doc/go1.4 (特に "net/websocket" セクション)
golang.org/x/net/websocket
package: https://pkg.go.dev/golang.org/x/net/websocket
- Go言語のWebSocket実装は、Go 1.4で標準ライブラリから削除され、
[インデックス 10459] ファイルの概要
このコミットでは、Go言語の標準ライブラリである html/template
、net/http
、websocket
パッケージ内のコメントに記載されているインポートパスが修正されています。具体的には、src/pkg/html/template/doc.go
、src/pkg/net/http/server.go
、src/pkg/websocket/client.go
、src/pkg/websocket/server.go
の4つのファイルが変更されました。これらの変更は、コードの機能には影響を与えず、ドキュメントや例示コードの正確性を保つためのものです。
コミット
commit 5b9d7825edeca72eae2fe11bf3fccb314ba23ce6
Author: Lucio De Re <lucio.dere@gmail.com>
Date: Fri Nov 18 18:33:44 2011 -0500
html/template, net/http, websocket: fix import paths in comments
R=golang-dev
CC=golang-dev, rsc
https://golang.org/cl/5411048
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/5b9d7825edeca72eae2fe11bf3fccb314ba23ce6
元コミット内容
html/template
、net/http
、websocket
パッケージ内のコメントに記載されているインポートパスを修正しました。
変更の背景
このコミットは、Go言語の標準ライブラリにおけるパッケージの再編成と命名規則の変更に対応するためのものです。Go言語は開発初期段階において、パッケージの構造や命名が頻繁に変更されていました。特に、http
パッケージが net/http
に、そして template
パッケージが text/template
や html/template
といったより具体的なパスに整理された時期がありました。
このコミットが行われた2011年頃は、Go言語がバージョン1.0のリリースに向けて安定化を進めていた時期にあたります。この時期には、標準ライブラリのAPIが頻繁に調整されており、特にパッケージのパスや名称が変更されることがありました。例えば、2011年9月7日のr60リリースでは、net/http
パッケージからURL解析機能が url
パッケージに移動したり、template
パッケージが新しいテンプレートパッケージ(以前は exp/template
として提供されていたもの)に置き換えられたりといった変更がありました。古い template
パッケージは old/template
に移動され、非推奨とされました。
この変更の背景には、以下の目的があったと考えられます。
- 明確性の向上:
http
のような汎用的な名前ではなく、net/http
のようにnet
(ネットワーク関連) のサブパッケージであることを明示することで、パッケージの役割と位置付けをより明確にする。 - 衝突の回避:
template
のように一般的な名前のパッケージは、ユーザーが作成するパッケージ名と衝突する可能性がありました。text/template
やhtml/template
のように階層化することで、名前空間の衝突を避け、より整理された構造を提供する。 - 標準ライブラリの成熟: Go言語が成熟するにつれて、標準ライブラリの構造もより論理的でスケーラブルなものへと進化しました。このコミットは、その進化の過程で生じたドキュメントの不整合を修正するものです。
gofix
ツールの活用: Go言語の開発チームは、このようなAPI変更に伴うユーザーコードの移行を支援するため、gofix
というツールを提供していました。このツールは、古いAPIの使用箇所を自動的に新しいAPIに書き換える機能を持っていました。しかし、コメント内の例示コードはgofix
の対象外となるため、手動での修正が必要でした。
このコミット自体は機能的な変更ではなく、あくまで既存のコードコメント内のインポートパスを、当時の最新のパッケージ構造に合わせて更新することが目的でした。これにより、ドキュメントや例示コードが誤った情報を提供することを防ぎ、ユーザーが正しいインポートパスを使用できるようにガイドしています。
前提知識の解説
Go言語のパッケージとインポート
Go言語では、コードは「パッケージ」という単位で整理されます。パッケージは関連する機能の集合であり、他のパッケージからその機能を利用するためには import
キーワードを使ってインポートする必要があります。インポートパスは、通常、Goモジュールのルートからの相対パス、または標準ライブラリの場合は特定のパスで指定されます。
例:
import "fmt"
: 標準ライブラリの fmt
パッケージをインポート
import "github.com/user/repo/mypackage"
: 外部モジュールの mypackage
をインポート
Go言語の標準ライブラリの進化とAPI変更
Go言語は2009年に公開され、その後も活発に開発が続けられてきました。特に初期のバージョンでは、APIの安定化やパッケージ構造の最適化のために、既存のパッケージ名やパスが変更されることがありました。これは、言語設計者がより良い構造や命名規則を見つける過程で自然に起こる現象です。
このコミットが行われた2011年頃は、Go言語がバージョン1.0のリリースに向けて安定化を進めていた時期にあたります。この時期には、以下のようなパッケージ名の変更や整理が行われました。
http
からnet/http
: ネットワーク関連の機能はnet
パッケージの下に集約されることになり、HTTPプロトコルを扱うhttp
パッケージはnet/http
に移動しました。これにより、ネットワーク関連の機能がnet
という一貫した名前空間の下に配置され、より論理的な構造になりました。template
からtext/template
およびhtml/template
: テンプレートエンジンに関する機能は、テキストベースのテンプレートとHTMLベースのテンプレートで明確に分離されることになりました。これにより、それぞれtext/template
とhtml/template
という専用のパッケージが提供され、用途に応じた適切なテンプレートエンジンを選択できるようになりました。特にhtml/template
は、HTMLエスケープ処理を自動で行うことで、クロスサイトスクリプティング (XSS) などのセキュリティ脆弱性を防ぐ役割も担っています。2011年9月のr60リリースでは、古いtemplate
パッケージがold/template
に移動され、新しいテンプレートパッケージ(現在のtext/template
に相当)が導入されました。
gofix
ツールの役割
Go言語の初期開発段階では、APIの変更が頻繁に行われたため、既存のコードを新しいAPIに自動的に移行するための gofix
というツールが提供されました。このツールは、Goのソースコードを解析し、非推奨となった関数呼び出しやパッケージパスなどを自動的に修正する機能を持っていました。これにより、開発者はAPIの変更に迅速に対応し、コードベースを最新の状態に保つことができました。しかし、コメント内の例示コードは gofix
の自動修正の対象外であったため、手動での修正が必要でした。
コメントの重要性
プログラミングにおいて、コメントはコードの意図、機能、使用方法などを説明するために非常に重要です。特に、例示コードを含むコメントは、そのコードを理解し、正しく使用するための手助けとなります。しかし、コード本体が変更されたにもかかわらずコメントが更新されない場合、コメントが誤った情報を提供し、ユーザーを混乱させる原因となります。このコミットは、まさにそのようなコメントの不整合を解消することを目的としています。
技術的詳細
このコミットの技術的な詳細は、Go言語のパッケージインポートパスの変更に集約されます。具体的には、以下の2つの主要な変更パターンが見られます。
-
import "template"
からimport "text/template"
への変更:- これは
src/pkg/html/template/doc.go
ファイルで確認できます。 - Go言語のテンプレートパッケージは、元々
template
という単一のパッケージとして提供されていました。しかし、テキスト出力用のテンプレートと、HTML出力でセキュリティ(XSS対策など)を考慮したテンプレートの2種類が必要になったため、それぞれtext/template
とhtml/template
に分割されました。 html/template
パッケージのドキュメント内の例示コードでは、HTMLテンプレートを扱うにもかかわらず、古いtemplate
パッケージをインポートしている記述があったため、これをtext/template
に修正しています。これは、html/template
がtext/template
の機能を拡張しているため、基本的なテンプレート操作の例としてはtext/template
を参照することが適切である、という意図が考えられます。
- これは
-
import "http"
からimport "net/http"
への変更:- これは
src/pkg/net/http/server.go
、src/pkg/websocket/client.go
、src/pkg/websocket/server.go
の各ファイルで確認できます。 - Go言語のネットワーク関連パッケージは、初期には
http
のようにトップレベルに配置されていましたが、後にnet
という親パッケージの下に整理されました。これにより、HTTPプロトコルを扱うパッケージはnet/http
というフルパスでインポートされるようになりました。 - この変更は、Goの標準ライブラリがより構造化され、ネットワーク関連の機能が
net
という共通の名前空間の下に集約されるという設計思想を反映しています。コメント内の例示コードも、この新しいインポートパスに合わせて更新されました。
- これは
これらの変更は、Go言語の標準ライブラリが進化し、より整理されたAPIを提供するための過程で生じたものです。コメントの修正は、この進化にドキュメントが追従し、ユーザーが常に最新かつ正確な情報にアクセスできるようにするための重要なメンテナンス作業と言えます。
コアとなるコードの変更箇所
diff --git a/src/pkg/html/template/doc.go b/src/pkg/html/template/doc.go
index 0324c9c0ee..570567e876 100644
--- a/src/pkg/html/template/doc.go
+++ b/src/pkg/html/template/doc.go
@@ -29,7 +29,7 @@ trusted, while Execute's data parameter is not. More details are provided below.
Example
- import "template"
+ import "text/template"
...
t, err := (&template.Set{}).Parse(`{{define "T"}}Hello, {{.}}!{{end}}`)
err = t.Execute(out, "T", "<script>alert('you have been pwned')</script>")
diff --git a/src/pkg/net/http/server.go b/src/pkg/net/http/server.go
index 7221d2508b..27040c7be5 100644
--- a/src/pkg/net/http/server.go
+++ b/src/pkg/net/http/server.go
@@ -1013,8 +1013,8 @@ func (srv *Server) Serve(l net.Listener) error {
// package main
//
// import (
-// "http"
// "io"
+// "net/http"
// "log"
// )
//
@@ -1044,8 +1044,8 @@ func ListenAndServe(addr string, handler Handler) error {
// A trivial example server is:
//
// import (
-// "http"
// "log"
+// "net/http"
// )
//
// func handler(w http.ResponseWriter, req *http.Request) {
diff --git a/src/pkg/websocket/client.go b/src/pkg/websocket/client.go
index 5dfd824e6e..89cdcda71a 100644
--- a/src/pkg/websocket/client.go
+++ b/src/pkg/websocket/client.go
@@ -72,8 +72,8 @@ A trivial example client:
package main
import (
-\t\t"http"
\t\t"log"
+\t\t"net/http"
\t\t"strings"
\t\t"websocket"
)
diff --git a/src/pkg/websocket/server.go b/src/pkg/websocket/server.go
index 57dc4fd1df..8320b032ea 100644
--- a/src/pkg/websocket/server.go
+++ b/src/pkg/websocket/server.go
@@ -60,8 +60,8 @@ A trivial example server:
package main
import (
-\t\t"http"
\t\t"io"
+\t\t"net/http"
\t\t"websocket"
)
コアとなるコードの解説
このコミットにおけるコードの変更は、すべてGoソースコード内のコメントブロック、特に例示コード内のインポートパスの修正に限定されています。実際のGoの実行コードやAPIの振る舞いには一切変更がありません。
-
src/pkg/html/template/doc.go
:- このファイルは
html/template
パッケージのドキュメント(doc.go
はGoのドキュメンテーションツールgo doc
が参照するファイル)です。 - 変更箇所は、
Example
セクション内のインポート文です。 - import "template"
が+ import "text/template"
に変更されています。これは、Goのテンプレートパッケージがtext/template
とhtml/template
に分割されたことに伴い、基本的なテンプレートの例としてはtext/template
をインポートするように修正されたものです。html/template
はtext/template
の上に構築されているため、基本的な機能を示す際にはtext/template
を参照するのが適切と判断されたと考えられます。
- このファイルは
-
src/pkg/net/http/server.go
:- このファイルは
net/http
パッケージのHTTPサーバー実装に関連するものです。 - 変更箇所は、
ListenAndServe
関数などのドキュメンテーションコメント内の例示コードです。 - import ("http")
が+ import ("net/http")
に変更されています。これは、GoのHTTPパッケージがhttp
からnet/http
に移動したことに対応する修正です。これにより、コメント内の例示コードが最新の正しいインポートパスを反映するようになりました。
- このファイルは
-
src/pkg/websocket/client.go
およびsrc/pkg/websocket/server.go
:- これらのファイルは、GoのWebSocketパッケージのクライアントとサーバーの実装に関連するものです。
- 変更箇所は、それぞれのファイル内の例示コードのコメントブロックです。
- import ("http")
が+ import ("net/http")
に変更されています。WebSocketプロトコルはHTTPの上に構築されているため、これらの例示コードでもHTTPパッケージ(net/http
)が使用されています。ここでも、HTTPパッケージのインポートパスの変更に合わせてコメントが更新されました。
これらの変更は、Go言語の標準ライブラリの進化と整理の過程で、ドキュメントの正確性を維持するために行われた、非常にクリーンな修正です。
関連リンク
- Go言語のコミット: https://github.com/golang/go/commit/5b9d7825edeca72eae2fe11bf3fccb314ba23ce6
- Gerrit Code Review (Go): https://golang.org/cl/5411048
参考にした情報源リンク
- Go言語の公式ドキュメント (現在のパッケージ構造): https://pkg.go.dev/
- Go言語の歴史と進化に関する情報 (一般的な知識として)
- Go言語のパッケージ命名規則に関する議論 (一般的な知識として)
- Go 1.0リリースノート (パッケージ変更の背景を理解するため)
- Go 1 Release Notes: https://go.dev/doc/go1 (特に "Standard library" セクション)
- Go言語の
text/template
とhtml/template
の違いに関する情報text/template
package: https://pkg.go.dev/text/templatehtml/template
package: https://pkg.go.dev/html/template
- Go言語の
net/http
パッケージに関する情報net/http
package: https://pkg.go.dev/net/http
- Go言語の
websocket
パッケージに関する情報 (このコミット時点では標準ライブラリの一部だったが、後に外部パッケージに移行)- Go言語のWebSocket実装は、Go 1.4で標準ライブラリから削除され、
golang.org/x/net/websocket
に移動しました。このコミット時点ではまだ標準ライブラリに存在していました。- Go 1.4 Release Notes: https://go.dev/doc/go1.4 (特に "net/websocket" セクション)
golang.org/x/net/websocket
package: https://pkg.go.dev/golang.org/x/net/websocket
- Go言語のWebSocket実装は、Go 1.4で標準ライブラリから削除され、
- Go言語のr60リリースに関する情報 (2011年9月7日)
- Go r60 release notes (Web検索結果から参照)
gofix
ツールに関する情報 (Web検索結果から参照)