配列 / スライス【夏休みにGo vol.8】
こんにちは、しーたです。
今日は配列とスライスについて学んでいきます。
①配列
基本的に他の言語と同じです。
ただし、配列はリサイズができません。
②スライス
スライスは、長さの決まっていない配列みたいなものです。
appendを使って要素の追加が可能です。
もちろん、配列やスライスを入れ子構造にすることもできます。
↓実行結果
③スライスのmake, cap, len
makeを使ってスライスを宣言することもできます。引数は「型, 要素数, 容量」で
要素数(length) = 要素の数
容量(capacity) = 何要素分メモリを確保しているか
です。容量を指定しなければ「容量=要素数」となります。
appendで容量が足りなくなると、自動で2倍の容量が確保されます。
これらは"len(), cap()"で確認できます。
↓実行結果
それでは!
ブール変数 ・演算子 / 型変換【夏休みにGo vol.7】
こんにちは、しーたです。
論理回路やゲームでおなじみのブール変数(論理値変数)、忘れてエラー出しがちな型変換について学んでいきます。
①ブール変数・ブール演算子
・%vは値を返すのに対し、%tはtrueかfalseかを返します。※つまり、ブール型以外の変数に%tを使うとエラーが出ます。
・"&&"が論理積、"||"が論理和、"!"が否定です。ほかの言語と同じですね。
↓出力結果
少し前に論理回路の試験があり、01をイヤになるくらい書いたので目に毒です...
②型変換(数値→数値)
数値から数値の場合は簡単です。以下のように変換できます。
↓出力結果
③型変換(文字列→数値)
こちらの方がよく使うと思います。
・"strconv.Atoi()"は変換結果とエラーの2つの戻り値を持っています。エラーの有無は今回使わず、"i, err = str~~" としてしまうと変数不使用のエラーが出てしまうため"_"を書いています。※この変数は使いません、という意味です
・「数値→文字列」の場合は"strconv.Itoa()"を使います。
・"string(h[0])"とするとアスキーコードを文字列に変換することができます。
↓出力結果
戻り値2つ返せるのは便利でいいですね。Cは1つしかダメだからポインター使ってしたような。
以上です!
それでは!
文字列型 / 改行・バッククォート【夏休みにGo vol.6】
こんにちは、しーたです。
数値型に引き続き、文字列型について学んでいきます。
①文字列型
・s[0] とすることで、sの一文字目のアスキーコードを出力することができます。
アスキーコード表 → http://www9.plala.or.jp/sgwr-t/c_sub/ascii.html
・strings.Replaceの部分は、sの中にあるHを、1つ目までXに置き換える、という意味です。
・strings/Containsの部分は、sの中にWorldという文字列が含まれていればtrueを返します。
↓実行結果
②改行・バッククォート
・改行は\nを使うほかに``を使う方法があります。``で囲んだ部分はソースコード上の改行が出力にも反映されます。
・また特殊文字であるダブルクォートを出力する際には、\"とする方法、`"`とする方法があります。
※「'」シングルクォートではなく、「`」バッククォートです。気を付けましょう。
↓出力結果
以上です!
それでは!
数値型と演算子 / シフト演算子【夏休みにGo vol.5】
こんにちは、しーたです。
今日はデータ型の種類と演算子について学びます。といっても他の言語とほとんど同じなので例と結果だけで、説明は省きます。
①数値型と演算子
uint, int, float, complexなど色んなデータ型があります。
演算子もおなじみの+,-,*,/,%、インクリメントも他の言語と同じですね。詳しくはドキュメントの数値型の仕様を見ましょう。→ https://golang.org/ref/spec#Numeric_types
"fmt.Printf"は、%Tでデータ型、%vで値が見れます。
複素数が簡単に使えるのは嬉しいですね。Cでは使えないのに...と思っていたら使えるようになってるみたいですね。知りませんでした。
②シフト演算子 "<<"
シフト演算子はビット演算子の一つです。私は初めて見たので少し書きます。
"<<1"と書くことで、「ビットを左に1つずらす」ことができます。
例えば1という数字は4bitで表すと"0001"です。これが"0010"(=2)になります。(ずらして空いた場所(右端のbit)には0が格納されます)
同様に"1<<2"なら"0001"→"0100"(=4)に、"3<<2"なら"0011"→"1100"(=12)になります。
それでは!
ライブラリのインポート / 変数の宣言 / constでの宣言【夏休みにGo vol.4】
こんにちは、しーたです。
前回に引き続き、Goの基本を学んでいきます。
①ライブラリのインポート
前回登場したfmtの他に、os/user, timeを使ってユーザー名と現在時刻を表示してみます。os/userというのはosライブラリ内にあるuserライブラリのことです。
・パッケージを複数インポートする際は()で囲います。
※実行結果に私の実名が出てしまったので、今回は見せません。
↓標準のライブラリについてはこちらで説明が見れるので困ったときは見てみましょう。
https://golang.org/pkg/
②変数宣言
Goでは以下のように変数を宣言します。t,fのように同じ型なら並べて宣言することもできます。
↓実行結果
また、↓のようにvarを()でまとめることも可能です。
他にも↓のように型を省略して宣言することも可能です
この場合、特に数値は int, float32bit / 64bitなどから自動で割り当てられる(?)ので、指定したい場合は型をしっかりと記述するほうが良いです。
※"fmt.printf("%T", 変数名)" で変数の型を見ることができます。
・関数内で宣言すればローカル関数に、関数外で宣言すればグローバル関数になります。
※Goでは同じ変数の宣言を2回するとエラーがでます。他の言語だとエラーにならないことも多いかも? 不慮の事故を防止するための仕様だそうです。
③constでの定数宣言
定数の場合は、↓のように型を指定せずに宣言することもできます。この場合、複数の型に代入することができる不思議な形になります。
定数で宣言した変数に値を代入することはできません。(エラーがでます)
以上です!GoがCに似ている、っていうのが何となく分かってきました!
それでは!
Hello, World / init関数 / コメントアウト【夏休みにGo vol.3】
こんにちは、しーたです。
前回、開発環境の構築をしたので早速プログラミングに入っていきたいと思います!
①Hello, World (+関数定義)
プログラミング入門の定番、Hello, Worldです。(同時進行でbuzzという名前の関数を定義、実行もしています)
fmt.Println("Bazz")
※理解すれば書き足すかもです。
このPrintlnのPの大文字・小文字に区別があるようですが、まだ理解していないので追って説明します。
②init関数
initという名前の関数に書いた内容は、main関数で呼び出さなくても最初に実行されます。初期設定などに使うようです。
↓実行結果
③コメントアウト
一行のコメントアウト → //コメント
複数行のコメントアウト → /*コメント(複数行可)*/
でできます。
環境構築【夏休みにGo vol.2】
こんにちは、しーたです。
まずはGo言語の環境構築をしていきます。
①Goのインストール
公式のダウンロードページからwindows最新版をダウンロード、すべてデフォルトの設定でインストールします。
https://golang.org/dl/
↓コマンドプロンプトの適当な場所(ディレクトリどこでもいいという意味)で
">go"を実行して、ヘルプが出てきたらOKです。
②gitのインストール
Goのライブラリをダウンロードするのにはgitを使うので、今のうちにgitをインストールしておきます。
Goと同じく公式のダウンロードページからダウンロードして、すべてデフォルトでインストールします。
https://git-scm.com/download/win
↓コマンドプロンプトの適当な場所で
">git"を実行して、ヘルプが出てきたらOKです。
③godocのインストール
godocはGo言語のドキュメント化ツールらしいです。(この意味はまだ理解していません)
コマンドプロンプトで">go get golang.org/x/tools/cmd/godoc"を実行します。
↑このURLは↓の上の方に書いてあるものです。
↓より詳しい方法はこの記事がとても分かりやすいです。
https://qiita.com/spiegel-im-spiegel/items/5f9e96f226f46089388f
インストール終了後、コマンドプロンプトで">godoc -http=3000"を実行します。
※ファイアーウォールの警告がでましたが、私は「許可」を押しました。
その後"http://localhost:3000/"にアクセスして、Goのドキュメントが表示されればOKです。
④IDE(統合開発環境)のインストール
GoLandというIDEが使いやすいらしいですが、30日の無料期間後は有料になるみたいなので、私はVisual Studio Codeを使います。
↓Visual Studio Codeのインストール
https://azure.microsoft.com/ja-jp/products/visual-studio-code/
↓GoLang
https://www.jetbrains.com/ja-jp/go/
⑤VScodeにGoの拡張機能をインストール
↓こちらの記事がとても分かりやすいので、説明は割愛します。
https://qiita.com/melty_go/items/c977ba594efcffc8b567
以上、無事Goの開発環境が準備できました。
次回から本格的に学んでいきます!
それでは!