Featured image of post Go言語とJavaの書き方の違いまとめ【プログラミング独学】

Go言語とJavaの書き方の違いまとめ【プログラミング独学】

Javaがメインの筆者がGo言語を独学して引っかかった記述方法の違いまとめ。行末のセミコロン、パッケージ定義、importの方法、関数の引数の順番など、JavaとGoのコードを並べて比較しています。随時更新♪

1421文字

Java脳がGoを覚えた際に引っかかった点をまとめてみよう

筆者はもっぱらのJava人間です。
システム屋になってからはJavaをメイン武器に構えながら、HTML/JavaScript/CSSなどをちょこちょこ触っていました。

そして、最近はGo言語の勉強をさらっと初めて見たのですが、意外と言語のルールが異なっている部分を見つけました。

今回は、そんな独学の中で見つけたJava言語とGo言語の違いを備忘録としてまとめてみようと思います。
記事にまとめる事で誰かが救われるのならやってやるぜ・・・!(果たしていつまで続くか)

という事で、こちらの記事は勉強の進度によって随時更新していこうと思うので、思い出したら見に来てくださいw。

ちなみに、Go Tour をベースに勉強をしているのでこちらを見てもらえると、より理解出来ると思います。

プログラミング言語Go Tour ( Go言語基礎文法最速マスター ) へようこそ! Go Tour は複数の章で構成されています。 左上の A Tour of Go から辿ることができます。A Tour of Go

筆者が気になった記法の違いまとめ

セミコロン

行末のセミコロンの扱いに関して差異があります。

java

Javaの場合は、行末にセミコロンが無いとコンパイルエラーとなります。
厳密でうね。

セミコロン
System.out.println("セミコロン有り");
System.out.println("セミコロン無し")//コンパイルエラー

Go

Goの場合は、セミコロンを入れても良いが、省略することも出来ます。
ほとんどの人は省略していますね。

セミコロン
fmt.Println("セミコロン有り");
fmt.Println("セミコロン無し")

パッケージ定義

プログラムのパッケージ定義方法について差異があります。

今回はサンプルとして、jp.blogenist.sample.hogeに定義するとします。

java

Javaの場合は、フルパッケージを記述する必要があります。

パッケージ定義
package jp.blogenist.sample.hoge;

Go

Goの場合は、パッケージパスの最後の階層のみを記述する必要があります。

パッケージ定義
package hoge

import方法

プログラムのimport方法について差異があります。

java

Javaの場合は、複数読み込みたい場合はそれぞれimport句から記述する必要があります。

パッケージ定義
package jp.blogenist.sample.hoge;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

Go

Goの場合は、factoredインポートステートメント( factored import statement )と呼ばれる方法で、パッケージのインストールをグループ化する事が可能です。

パッケージ定義
package hoge

import (
	"fmt"
	"math"
)

また、Javaのようにそれぞれimport句から書くことも出来ますが、基本的にはfactoredインポートステートメントが主流となっているようです。

関数の引数

関数の引数定義方法について差異があります。

java

Javaの場合は、型名 変数名[,...]の順番で定義していきます。

関数の引数定義方法
public Person create( String name, Integer age){
...
}

Go

Goの場合は、変数名 型名[,...]の順番で定義していきます。

パッケージ定義
func (name string, age integer) create() Person {
...
}

終わりに

Java言語が出来る人はGo言語が出来る、逆もまた然り。と、いろいろな人がよく言ってます。

言語ごとの記述方法の差異さえ抑えてしまえば、なんだかいけそうな気がしているので、頑張って勉強してみようと思います!

皆さんも、Go言語を覚えてみてはいかがでしょうか♪