ウェブサイト検索

最小限の Go プログラムを理解する


これは魅力的な言語ですが、Go プロジェクトの構造は予想よりも少し複雑です。今すぐ Go をセットアップする方法を学びましょう。

Go の人気は年々高まっています。 Go を採用する企業が増えており、言語の展開のユースケースが増えるにつれて開発者プールが拡大しています。人々はこれを使用して、高速 Web アプリ、ブロックチェーン ソリューション、機械学習ツールに至るまでのプログラムを構築しています。

開発者は、その表現力、使いやすさ、言語パフォーマンスの高さから Go を愛用しています。 Go は、パッケージとライブラリのエコシステムが急速に成長しているため、ほとんどの言語よりも学習曲線が速くなります。

Go の入門

Go プログラミング言語は、Windows、macOS、またはほとんどの Linux ディストリビューションにはプリインストールされていません。 Go プログラムを実行するには、Go をインストールする必要があります。公式 Go ダウンロード ページをチェックして、マシンにインストールしてください。新しいバージョンにはより多くの機能とアップデートがあるため、言語を最大限に活用するには、Go の最新バージョンをインストールすることをお勧めします。

Go をインストールすると、Go で言語を操作したり、Go ファイルを実行したり、ワークスペースを作成したり、プロジェクトをビルドしたりすることができます。

Go ファイルを作成し、標準ライブラリを使用して Go プログラムを実行できます。ただし、外部ライブラリを使用する場合は、依存関係管理、バージョン追跡などのために Go モジュール ファイルを作成する必要があります。

Go モジュール ファイル

Go では、モジュールはルートに go.mod ファイルがあるファイル ツリー内のパッケージのコレクションです。このファイルは、モジュールのパス、インポート パス、およびビルド プロセスを成功させるための依存関係の要件を定義します。

プロジェクトのパスまたはディレクトリを指定する前に、Go mod コマンドと init サブコマンドを使用して Go モジュール ファイルを作成できます。

go mod init project-directory

このコマンドにより、go.mod ファイルが作成されます。 init コマンドの後の引数はモジュール パスです。モジュール パスは、ホスト環境上のファイル パスまたはリポジトリ ドメイン パスにすることができます。

外部パッケージと依存関係をインストールすると、go はそれらが確実に含まれるように go.mod ファイル内の require 宣言を更新します。

mod コマンドの tidy サブコマンドを使用して、プログラムに必要なすべての依存関係をダウンロードできます。

go mod tidy

このコマンドは、不足しているインポートをすべて go module ファイルにダウンロードします。

Go パッケージの名前空間

すべての Go ソース ファイルはパッケージに属しており、その識別子を使用してパッケージ名前空間内のコードにアクセスできます。

パッケージに複数の名前空間を持つことができます。フォルダーを作成すると、新しい名前空間が作成されたことになります。ドット (.) 表記を使用して他の名前空間にアクセスできます。

// folder 1 
package folder
 
func Folder() any {
    // some function body here
    return 0;
}

別の名前空間から別の名前空間にアクセスする例を次に示します。

// folder 2, file in different namespace
package directory
 
func directory() {
    // accessing the Folder function from the folder namespace 
    folderFunc := folder.Folder()
}

外部名前空間の識別子にアクセスするには、名前を大文字にして識別子をエクスポートする必要があります。

主な機能

main 関数は Go プログラムのエントリ ポイントとして機能します。 main 関数がなければ Go ファイルやパッケージを実行することはできません。任意の名前空間にメイン関数を含めることができます。ただし、ファイルまたはパッケージにはメイン関数を 1 つだけ含める必要があります。

以下はメイン関数を示す簡単な Hello World プログラムです。

package main
import "fmt"
 
func main {
    fmt.Println("Hello, World!") 
}

このコードは、main パッケージ名前空間で main 関数を宣言します。次に、fmt パッケージをインポートし、Println メソッドを使用して文字列をコンソールに出力します。

Go でのパッケージのインポート

他の多くの言語と比較して、パッケージと依存関係のインポートは簡単です。 import キーワードは、パッケージをインポートする機能を提供します。 import キーワードを使用して、標準ライブラリおよび外部依存関係からパッケージをインポートできます。

import "fmt"

上の例では、1 つのパッケージをインポートしています。複数のパッケージをインポートできます。 import ステートメントの後に括弧内にパッケージを指定する必要があります。

import (
    "fmt" // fmt for printing
    "log" // log for logging 
    "net/http" // http for web applications
    "encoding/json" // json for serializing and deserializing structs to JSON
)

import ステートメントに区切り文字を追加することは無効です。パッケージ名の前にカスタム名を指定することで、インポートのカスタム名を宣言できます。

import (
    "net/http" 
     encoder "encoding/json" // alias import here
)

ここでは、カスタム名をエンコーダとしてjsonパッケージをインポートしました。カスタム名 (エンコーダー) を使用してパッケージの関数と型にアクセスする必要があります。

一部のパッケージでは、副作用のために他のパッケージをインポートする必要があります。パッケージ名の前にアンダースコアを付ける必要があります。

import (
   _ "fmt" // side effects import
    "log"
)

副作用のためにインポートしたパッケージにはアクセスできませんが、依存関係を構成すればアクセスできます。

実行するか構築するか

Go コードをコンパイルして実行するには、run コマンドと build コマンドを使用します。これらには同様の機能があり、パッケージの実行に使用します。

run コマンドは、コンパイル命令と実行命令を組み合わせたものです。 run コマンドは、作業ディレクトリに実行可能ファイルを作成せずにパッケージを実行します。 run コマンドの後に、パッケージ名のファイル名を指定する必要があります。

go run file.go // executes a file
go run packagename // executes the package

ビルド コマンドは、パッケージまたはファイルをバイナリ実行可能ファイルにコンパイルするコンパイル コマンドです。

ファイル名またはパッケージ名の後に引数を指定せずに build コマンドを実行すると、go はパッケージのルート ディレクトリに実行可能ファイルを生成します。

go build main.go // compiles a file 
go build "package name" // compiles a package

パッケージを変更する場合は、ビルド コマンドを使用してプログラムを再コンパイルする必要があります。

引数としてディレクトリを指定すると、ビルド コマンドによって指定されたディレクトリに実行可能ファイルが出力されます。

go build file -o "directory"

Go でできることはたくさんあります

Go 標準ライブラリは強力で直感的です。外部の依存関係をインストールすることなく、最新のアプリケーションを迅速に構築できます。

Go は 2009 年にリリースされて以来、開発者や企業がさまざまな分野のさまざまなユースケースに Go を使用してきました。その成功の主な理由は、Go が C のようなパフォーマンスとともに Python のような構文を提供しているためです。

関連記事: