Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

[インデックス 16244] ファイルの概要

コミット

このコミット e2b2e0d8d19e747ffe2059ed8426f5b12b77ff0f は、Go 1.1 のリリースノート doc/go1.1.html から、go run コマンドに関する変更点の記述を削除するものです。具体的には、go run コマンドの動作変更(引数なしで現在のディレクトリ内のファイルをすべて実行するようになった点、テストファイルを指定するとエラーになる点)についての説明が削除されています。

GitHub上でのコミットページへのリンク

https://github.com/golang/go/commit/e2b2e0d8d19e747ffe2059ed8426f5b12b77ff0f

元コミット内容

commit e2b2e0d8d19e747ffe2059ed8426f5b12b77ff0f
Author: Andrew Gerrand <adg@golang.org>
Date:   Tue Apr 30 09:47:23 2013 -0400

    doc/go1.1: remove discussion of "go run" change
    
    Update #5164
    
    R=golang-dev, dave
    CC=golang-dev
    https://golang.org/cl/9049043
---
 doc/go1.1.html | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/doc/go1.1.html b/doc/go1.1.html
index 5e99820d59..20c7d36447 100644
--- a/doc/go1.1.html
+++ b/doc/go1.1.html
@@ -398,16 +398,6 @@ To update pre-Go 1 code to Go 1.1, use a Go 1.0 tool chain
 to convert the code to Go 1.0 first.
 </p>
 
-<h3 id=\"gorun\">Changes to the go run command</h3>
-
-<p>
-The <a href=\"/cmd/go/#hdr-Compile_and_run_Go_program\"><code>go run</code></a>
-command now runs all files in the current working
-directory if no file arguments are listed. Also, the <code>go run</code>
-command now returns an error if test files are provided on the command line. In
-this sense, \"<code>go run</code>\" replaces \"<code>go run *.go</code>\".
-</p>
-
 <h3 id=\"tags\">Build constraints</h3>
 
 <p>

変更の背景

このコミットは、Go 1.1 のリリースノートから go run コマンドに関する記述を削除しています。これは、Go の issue #5164 に関連しています。issue #5164 は、go run コマンドが go test と異なり、引数なしで現在のディレクトリ内のファイルを処理できないという一貫性のない動作を指摘していました。この問題の解決策として、go run コマンドは引数なしで実行された場合に現在のディレクトリ内の package main をスキャンし、コンパイルして実行するように変更されました。もし package main が見つからない場合はエラーメッセージを出力して終了します。

このコミットは、この go run コマンドの変更がリリースノートに記載されたものの、最終的にその記述が不要になった、あるいは別の形でドキュメント化されることになったため削除されたと考えられます。リリースノートは、ユーザーが新しいバージョンに移行する際に重要な変更点を把握するためのものですが、詳細な挙動の変更は、より専門的なドキュメントやコマンドのヘルプに任せるという判断があったのかもしれません。

前提知識の解説

Go 言語

Go(Golang)は、Googleによって開発されたオープンソースのプログラミング言語です。静的型付け、コンパイル型言語でありながら、動的型付け言語のような簡潔な記述を可能にし、並行処理を強力にサポートしています。システムプログラミング、Webサービス、ネットワークプログラミングなどで広く利用されています。

go コマンド

go コマンドは、Go 言語のソースコードのコンパイル、実行、テスト、パッケージ管理などを行うための公式ツールです。Go 開発における中心的な役割を担っています。

go run コマンド

go run コマンドは、Go のソースファイルをコンパイルし、その場で実行するためのコマンドです。通常、一時的なスクリプトの実行や、開発中のプログラムの動作確認に利用されます。

go test コマンド

go test コマンドは、Go のテストコードを実行するためのコマンドです。テストファイル(通常 _test.go で終わるファイル)を自動的に検出し、テストを実行します。

package main

Go 言語において、実行可能なプログラムのエントリポイントとなるパッケージは main パッケージです。main パッケージには、プログラムの実行開始点となる main 関数が含まれている必要があります。

リリースノート

ソフトウェアの新しいバージョンがリリースされる際に、そのバージョンで追加された新機能、修正されたバグ、変更された動作、非推奨になった機能などをまとめた文書です。ユーザーが新しいバージョンにスムーズに移行できるよう、重要な情報が記載されます。

Git コミット

Git におけるコミットは、リポジトリへの変更の記録単位です。各コミットは、特定の時点でのプロジェクトの状態をスナップショットとして保存し、変更履歴を追跡するために使用されます。コミットには、変更内容、作者、日時、コミットメッセージなどが含まれます。

技術的詳細

このコミットは、doc/go1.1.html ファイルから特定の HTML セクションを削除する単純な変更です。削除されたセクションは、go run コマンドの変更点について説明していました。

削除された内容は以下の通りです。

<h3 id="gorun">Changes to the go run command</h3>

<p>
The <a href="/cmd/go/#hdr-Compile_and_run_Go_program"><code>go run</code></a>
command now runs all files in the current working
directory if no file arguments are listed. Also, the <code>go run</code>
command now returns an error if test files are provided on the command line. In
this sense, "<code>go run</code>" replaces "<code>go run *.go</code>".
</p>

このセクションは、Go 1.1 で導入された go run コマンドの新しい挙動を説明していました。具体的には、以下の2点が挙げられています。

  1. 引数なしでの実行: go run コマンドがファイル名を指定せずに実行された場合、現在の作業ディレクトリ内のすべての Go ファイル(.go 拡張子を持つファイル)を対象として実行されるようになったこと。これは、以前の go run *.go と同等の動作を意味します。
  2. テストファイルの扱い: go run コマンドにテストファイル(_test.go ファイルなど)がコマンドライン引数として渡された場合、エラーを返すようになったこと。これは、テストの実行は go test コマンドの役割であり、go run は通常のプログラム実行に特化するという意図を示しています。

この記述が削除された背景には、Go の issue #5164 の解決があります。issue #5164 は、go rungo test と異なり、引数なしで現在のディレクトリ内のファイルを処理できないという一貫性のない動作を指摘していました。この問題の解決策として、go run コマンドは引数なしで実行された場合に現在のディレクトリ内の package main をスキャンし、コンパイルして実行するように変更されました。もし package main が見つからない場合はエラーメッセージを出力して終了します。

このコミットは、この go run コマンドの変更がリリースノートに記載されたものの、最終的にその記述が不要になった、あるいは別の形でドキュメント化されることになったため削除されたと考えられます。リリースノートは、ユーザーが新しいバージョンに移行する際に重要な変更点を把握するためのものですが、詳細な挙動の変更は、より専門的なドキュメントやコマンドのヘルプに任せるという判断があったのかもしれません。

コアとなるコードの変更箇所

変更は doc/go1.1.html ファイルのみです。 具体的には、以下の10行が削除されています。

--- a/doc/go1.1.html
+++ b/doc/go1.1.html
@@ -398,16 +398,6 @@ To update pre-Go 1 code to Go 1.1, use a Go 1.0 tool chain
 to convert the code to Go 1.0 first.
 </p>
 
-<h3 id="gorun">Changes to the go run command</h3>
-
-<p>
-The <a href="/cmd/go/#hdr-Compile_and_run_Go_program"><code>go run</code></a>
-command now runs all files in the current working
-directory if no file arguments are listed. Also, the <code>go run</code>
-command now returns an error if test files are provided on the command line. In
-this sense, "<code>go run</code>" replaces "<code>go run *.go</code>".
-</p>
-
 <h3 id="tags">Build constraints</h3>
 
 <p>

コアとなるコードの解説

このコミットは、Go 1.1 のリリースノートから go run コマンドに関する特定のセクションを削除するものです。コードの機能的な変更ではなく、ドキュメントの変更に当たります。

削除された HTML コードは、go run コマンドの挙動変更について説明していました。

  • <h3 id="gorun">Changes to the go run command</h3>: go run コマンドの変更点に関する見出しです。
  • <p>...</p>: 変更点の詳細を説明する段落です。
    • The <a href="/cmd/go/#hdr-Compile_and_run_Go_program"><code>go run</code></a> command now runs all files in the current working directory if no file arguments are listed.
      • これは、go run が引数なしで実行された場合に、現在のディレクトリ内のすべての Go ファイルを対象とするようになったことを示しています。
    • Also, the <code>go run</code> command now returns an error if test files are provided on the command line.
      • これは、go run にテストファイルが渡された場合にエラーを返すようになったことを示しています。
    • In this sense, "<code>go run</code>" replaces "<code>go run *.go</code>".
      • これは、引数なしの go rungo run *.go と同等の機能を持つようになったことを強調しています。

このセクションが削除された理由は、Go の issue #5164 の解決により、go run の挙動がさらに洗練され、このリリースノートの記述が不適切になったか、あるいはより適切な場所(例えば go run コマンド自体のヘルプメッセージや、より詳細なドキュメント)で説明されることになったためと考えられます。リリースノートは簡潔であるべきであり、詳細な挙動は別の場所で管理されるのが一般的です。

関連リンク

参考にした情報源リンク