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言語を覚えてみてはいかがでしょうか♪
