web-technical-blog

web開発に関する技術メモ

Go言語の概要と特徴について

■Go言語の概要

Go言語はコンパイル言語で構文はC言語を基にしている
LinuxとMacOXしかサポートしていなかったが、
2012年3月にリリースされたバージョン1からはWindowsもサポートされるようになった

■Go言語の特徴

オープンソースプロジェクト
Go言語はオープンソースプロジェクトであり、「BSDスタイル・ライセンス」で公開されている。

◇シンプルな構文
C言語の構文を基本として、シンプルで新しい構文体系

コンパイルが速い
C言語系のコンパイラに比べて、各段にコンパイル速度が速くなっている

◇並列処理をサポート
並列処理を言語としてサポートしているため、複数の処理を同時に、かつ、効率的に実行することができる。
並列処理は「ゴルーチン」と呼ばれる実行単位で管理され、必要に応じてOSのスレッド上に割り当てられて実行される。

ガベージコレクションによるメモリ管理
ガベージコレクションとは、メモリが使用されているとどうかを自動的に判断し、使用されなくなったメモリを自動的に開放する機構

◇安全性が高い
Go言語にはポインタはあるが、不正ないメモリアクセスができないように、ポインタの演算はできない。
型のチェックも厳密に行われるため、バグによってメモリが壊される危険性を回避している

◇継承がない
Go言語は、一般的なオブジェクト指向言語で用いられる「クラス」がない。
すべての変数は、いずれかの「型」に属する。
この「型」にはメソッドを持たせることができるが、継承という概念はない。
継承による複雑さを排除した代わりに、「埋め込み」や「インターフェース」という仕組みが用意されている

◇容易なエラーハンドリング
Go言語の関数は、「複数個の値」(多値)を戻り値として返すことができる。
関数の実行結果と一緒にエラー情報を返すことができるので、エラーハンドリングが容易。