1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Qiita全国学生対抗戦Advent Calendar 2024

Day 18

python一筋3年がA Tour of Goで詰まったこと

Posted at

この記事 is 何

いつもはPythonを使用して機械学習やデータ分析を行っています。
最近後輩がGoを使いだしたらやめられないと言っていたのでGoのチュートリアルを受けてみることにしました。

というわけで、Pythonとの違いや詰まったところをまとめていこうと思います。

TL;DR

以下の部分で詰まりました。

  • ポインタ
  • 型宣言
  • 使用しない変数を許さない

ポインタ

C言語などでポインタは出てくると噂でしたが、Goでも出てくるとは。。。
避けては通れないですね。

ポインタは値のメモリアドレスを示すもので、以下のようにして使用します。

i := 42
p := &i 
fmt.Println(*p) //42

pythonでは基本的に変数などは参照渡しですが、Goではポインタを用いることで参照渡しをすることができるらしいです。

こちらの記事がわかりやすかったので、メモしておきます。

型宣言

でた。。型宣言。。
Pythonは自動で推論してくれるから楽ですよね。

なんでいちいち書かなきゃいけないんだって思うけど、多くのエンジニアは型がないと気持ち悪いって言いますよね。。

見慣れない表記だったのは、型だけ宣言して初期化しなかったときにゼロ値が与えられることです。

func main() {
	var i int
	var f float64
	var b bool
	var s string
	fmt.Printf("%v %v %v %q\n", i, f, b, s)
    // 0 0 false ""
}

使用しない変数を許さない

この機能はpythonにも実装してほしいなと思いました。
(すぐコードを散らかしてしまうタイプなので、、、)

Goは使用しない変数があるとビルドできません。
例えば先ほどのコードに変数tを含めておくとdeclared and not usedというエラーがでます。

func main() {
	var i int
	var f float64
	var b bool
	var s string
    var t string
	fmt.Printf("%v %v %v %q\n", i, f, b, s)
    // declared and not used: t
}

使用していないインポート等も同様にエラーがでるので、コードの可読性が強制的に上がりますね!

まとめ

A Tour of Goを通して、Pythonでいかに楽してきたかがわかりました。

型宣言などは最近Pythonの関数等で使用している人も増加していたり、参照渡しを行っていると意識できたりと、Pythonの理解度も深まった旅でした。

また、使わないインポートなどはPythonでも整理しようと思います(笑)

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?