何かを書き留める何かスマートフォン用の表示で見る何かを書き留める何か数学や読んだ本について書く何かです。最近は社会人として生き残りの術を学ぶ日々です。その1Golang第二言語を学ぶ時期が来た以前、勉強のために『プログラミング言語Go』を購入した。www.kinokuniya.co.jp最近、とある野望を抱いて「Go言語で実装してみよう」と思い立ったが、さすがにGo言語を全く知らない状態で実装を進めても無理があることがすぐにわかった。そのため、積読状態であった『プログラミング言語Go』を読むことにした。読んでも継続できないと思ったので、ここのブログにエントリを書きこ残すことにする。今回は1.1から1.3まで。helloworld.goを実行。今回はJetBrainsのGoglandを使っているのでCtrl+F10を押すか緑の矢印を押すだけ。各ソースファイルはpackage宣言から始まる。続いてインポートするパッケージを並べる。この順序は必ず守る必要がある。'import'となる。fmtはフォーマットされた入出力を扱う函数があるパッケージ。mainパッケージは特別で、単独で実行可能なプログラムを定義する。函数宣言は予約語func、関数名、パラメータリスト(今回は空)、結果のリスト(今回は空)、本体からなる。同じ行2つ以上の文や宣言が現れない限り、文や宣言の最後にセミコロンを必要としない。「事実上、ある種のトークンの後の改行はセミコロンへ変換されます。Goのコードを解析するためには改行する場所が問題となる。gofmtツールでコードを標準書式へ書き換える。fmt.Println(s)}osパッケージはプラットフォームとは独立した形式でOSを扱うためのパッケージ。Pythonのosと目的は同じと思われる。コマンドライン引数はos.Argsで扱う。os.Argsは文字列のスライスで動的に大きさが決まる配列要素のシーケンス。Pythonではsys.argsで配列であった。os.Args[0]でコマンド自身の名前。os.Args[1:len(os.Args)]`が引数。インデックスの指定は半開。Goglandのフォーマットと、gofmtは微妙に動作が異なる。Goglandの設定を変更すれば保存時にgofmtとgoimportsが実行される。変数が明示的に初期化されない場合は暗黙的に変数の型に対するゼロ値に初期化される。forループはGoで唯一のループ文。C言語風の文、範囲を指定するものがある。fmt.Println(s)}効率の良い方法はstringsのJoinを使うことである。条件部分は丸括弧で囲まない。make(map[string]int)で文字列がキーで整数値が値である空のマップを作成する。makeにはほかの用途もある(がまだ書かれていない)。マップの繰り返しの順序は規定されていない。bufio.NewScanner(os.Stdin)で標準入力から読み込むスキャナができる。input.Scan()を呼び出すごとに1行読み込み改行文字を取り除く。中身はinput.Text()で取り出す。fmt.PrintfはC言語みたいなフォーマットされた文字列を出力する。}}os.Openはファイル*os.Fileとエラーの結果を返す。nilと一致するかどうかで成功の可否を判定する。このファイル処理はストリーム処理となる。}}ioutil.ReadFileはファイル全体を一気にメモリへ読み込む函数。楽であるが、ファイルが大きいと辛そう。感想まだ最初の数ページしか読めていない段階であるが、標準ライブラリが充実したC言語という印象。この印象は今後覆されるはずである。ファイルの読み書きがPythonと比べて面倒である。Javaでも面倒だなと思ったので、型を考慮したファイルの読み書きはどうしてもこうなってしまうのかもしれない。PyCharmと比べてGoglandは完成度がそれほど、という印象。Programsに文句を言うほうがおかしいけど。訳注の補遺(のつもり)過去にこのようなエントリを書いた。Python』の続き。Python』の続き。2日目に参加しました。»プロフィールid:XaroCydeykn数学や計算機、読んだ本について書くブログのような何かです。(1)最近人気の記事はてなブログをはじめよう!XaroCydeyknさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。