go言語入門学習サイト

go言語初心者のために基礎から解説します。

ダブルクオーテーションのありかなしかは何が違う?

かなり基礎だがダブルクオーテーションのありとなしの解説をします。 【結論】 "" で囲むと文字列扱い。 "" で囲まないのは数値型や変数などとして扱いたい時などです。 【理由】""はダブルクオーテーションと言い値を文字列として扱いたい時に使います。一…

go言語でポインタを構造体で使用する

go言語で構造体でポインタを扱う事ができます。 その方法をやってみましょう。【結論】&vで構造体の値をポインタで返します。【理由】 package mainimport "fmt"func main() { // 構造体を定義 type 構造体 struct { // ポインタ変数を割り当てる p := &v }…

go言語の構造体とはどのようなもの

go言語は他のプログラミング言語にあるクラスはありません。 モノを一つにまとめるのにはクラスに相当する構造体を使います。【基本】複数データがありそれをひとまとめにします。 構造体structを利用して名前nameや性別genderなどを書く事で自身のデータ構…

go言語のポインタの基本

go言語にはポインタがあります。 ポインタはC言語などにもありますが初めて扱う人だとなかなかイメージしにくいです。 そのポインタを解説します。 【結論】ポインタはメモリを格納するものでvar p *intにコードを書きます。 ポインタにはポインタ変数、ポイ…

Go言語のdefer文をコードで動かす。

Go言語のdeferは指定した部分の処理を遅らせる処理です。 一体どういう事を処理で見ていきます。 【理由】defer 関数(またはメソッド)呼び出し このような処理をすると指定部分の処理が後から呼び出されます。実際に簡単なコードで見ていきましょう。package…

go言語のswitchの処理を時間帯を表すプログラムで見よう

go言語でswitchの処理をコードで動かします。 ifとの違いも比較しましょう。【基本】基本的にswitchはif文と同じような動きします。switch文では処理のないcaseを追加するだけで共通処理が実行されifより簡素に処理ができます。 switch x { case value1: // …

go言語で平方根を出してみましょう。

go言語で今まで学習したif文やループ処理を使い平方根を求めてみましょう。【具体例】package mainimport ( "fmt" "math" )func Sqrt(x float64) float64 { z := 1.0 bestZ := 1.0 bestDistance := x for i := 0; i z -= (z*z - x) / (2 * z) if distance :=…

go言語でループ処理を分岐する。

go言語の繰り返しは他言語にも見られるようにfor文を使います。 そしてそれにifを使い条件に合った値を出す事ができます。【基本】for 繰り返し条件 { // 繰り返し }for文でカウンターを初期化して繰り返します。 繰り返しにはi++ インクリメントで繰り返し…

【基本】go言語の定数って何?

go言語の定数って聞くけどそもそも定数ってどんな意味か分からない。 そんな方のために定数について解説します。【結論】定数は一度決めたらもう変更する事ができない値で文字列や整数などがあります。 【理由】定数を使うのは値を変えたくない時です。 例え…

【初心者向け】サーバとは何か?

go言語をやってるけどサーバを良く知らない。 確かに知らなくても動かせるが基礎としては知るべきです。【結論】サーバはコンピュータの向こうにあるサービスでWebサイトなどもサーバです。【理由】私達がスマホでWebサイトを見たいとなれば 私達がクライア…

go言語で変数からポインタを取得する

goのポインタは、メモリアドレスを格納する変数です。【結論】変数からポインタを取得する場合は変数の前に&をつけます。【どういうものか】変数の前に&をつけると変数のメモリを返します。 このような形です。 p = 21 // ポインタpを通してiへ値を代入する …

go言語の構造体の基本について

go言語の構造体とは他のプログラミング言語のクラスに相当する機能です。【結論】type 構造体名 struct {} で定義し、フィールド名と型名をすると動かせます。【理由】構造体があると良い理由は複数の値をひとまとめに出来るからです。 わざわざ一つ一つ定義…

go言語でwhile文の動作をfor文で行う。

go言語ではJavaScriptみたくwhile文はありません。while文はないけどfor文で実は同様な処理をできます。 それを実際にやってみます。【やり方】for i 処理 }forの後に条件式を入れてそれがtrueつまり真ならそれが終わるまで繰り返しwhile文と同様な動きしま…

go言語の無名関数とはどんなものか

go言語の無名関数とはその名の通り定義する名前がない関数の事です。 どのように動くかを解説します。【どのようなものか?】func(引数1, 引数2, …) 戻り値の型1, 戻り値の型2, … { 関数の本体 }書き方自体はとてもシンプルです。 関数に直接変数を入れられ…

go言語で数値を使った関数の動き

go言語で数値を使った関数でコードを通じてどんな動きをするかをやってみました。 【数値を使った関数】基本的にgo言語の関数はfunc addOne(n int) int { return n + 2 }関数と戻り値に型をして出来ます。 このコードならaddOneが関数、nが引数、intが型です…

go言語の配列をfor文で処理しよう

go言語で配列をfor文で処理する事をしてみます。今回使う処理が変数名 := [...]型{初期値1, 初期値n} for 初期化式(1.値を初期化) ; 条件式(2.条件) ; 増減式(3.値を更新) { 繰り返される箇所 }この処理を使って実際にコードを動かしてみます。 【コード】①…

go言語の比較演算子の真偽判定

go言語の真偽判定の式について解説します。【結論】== 同じ値であれば true != 異なる値であれば true 【理由】例えば 1 == 2 → false これは同じ値でないからfalseとなります。 1 == 1 → true これは同じ値だからtrueです。1 != 2 → true 1と2は違うからtru…

go言語の多層配列で名前を取り出してみましょう。

go言語の配列では配列を二重にしてより複雑な処理で値を取り出す事ができます。 【結論】配列名 := [サイズ] [サイズ]型{初期値1, ..., 初期値n} 【理由】a := string{ {"Hello", "Go"}, {"Hello", "Python"}, }これはstringで文字列型です。 こんな風に書い…

go言語の静的型付け言語はコンパイラ時にエラーが分かる

go言語はJavaScriptやPythonとは異なり静的型付け言語です。 この静的型付け言語は何かを解説します。 【結論】go言語は全て何らかの型に属しておりその規約は厳格に決まってる。 【理由】静的型付け言語では書き方のルールが厳格ですから例えば演算子で異な…

【基本】go言語の変数は右から新しい型とされる

go言語は右から新しい型になる!go言語では決まった型を指定しないで変数宣言すると右側から型推論します。 どういう事かを解説していきます。 【結論】var i int x:= i x is an int 【理由】型を指定しないというのは:=やvar =にしてコードを書く事です。va…

go言語の基礎的な型変換について

go言語では型変換をする事ができます。 数値型から整数型に変換したりなどの処理が可能です。 それの基礎的な動きを見ていきましょう。 【結論】例えばintからfloat64にする場合はvar i int = 123 f64 := float64(i) 【理由】なぜ型変換が必要なのかと言えば…

【関数】returnに何も書かず戻り値を返す

go言語は戻り値に名前を付けると最初で定義した変数名として使われリターンに何も書かずに戻せます。 【結論】func 関数名(引数) 戻り値の型 { 戻り値の名前を付けた変数の処理 return } 【理由】go言語では名前を変数を使うとreturnに何も書かずに戻せます…

【基本】go言語では関数で二つ同時に引数を返せる

go言語では関数に引数を二つ持たせて同時に処理する事ができます。【結論】func 関数名(変数名 型)(戻り値の型1, 戻り値の型2){ 【具体例】実際にやってみましょう。package mainimport "fmt"func swap(x, y string) (string, string) { return y, x }func m…

【基本】go言語の関数の引数の受け取り

go言語の関数の引数は関数の呼び出し先の値を関数に戻したモノを言います。 その引数の受け取りを見ていきましょう。【結論】関数は 0 個以上の引数を取ることができます。 【理由】func 関数名(引数 引数の型) 返り値の型 { 処理 }と書きます。 そして、型…

【基本】goは大文字で始まるものは外部パッケージから参照できる

Go言語では最初の文字が大文字で始まるものはExported namesで参照できます。 【結論】パッケージを大文字で参照された文字は他のパッケージから見える。【具体例】実際に見てみましょう。package mainimport ( "fmt" "math" )func main() { fmt.Println(mat…

go言語の型を使って動きを見てみます。

go言語のboolやfloatで実際に型の動きを見ていきましょう。【具体例】 ①package mainimport ( "fmt" "math/cmplx" )var ( ToBe bool = false MaxInt uint64 = 1 z complex128 = cmplx.Sqrt(-5 + 12i) )func main() { fmt.Printf("Type: %T value: %v\n", ToB…

go言語で複数の値を初期化する

go言語では複数の変数を一斉に初期化することができます。【結論】Go言語では ,で区切ることで複数の変数を同時に初期化できる。 【理由】var 変数名 データ型 = 初期値を宣言するとgo言語では複数の値を一気に初期化する事ができます。書き方は var x, y in…

go言語で円周率の計算をしてみた

今回はgo言語で円周率の計算します。【具体例】package mainimport ( "fmt" "math" )func main() { fmt.Println(math.Pi) }3.141592653589793【解説】importでmathパッケージを呼び出します。 math.PiのPiは円周率をパイの値で出す処理です。 これを動かすと…

go言語のImportの基本について

go言語のimportとはpackageをインポートするものです。【結論】go言語でパッケージをインポートする時は import "fmt"などとします。 【理由】import を使用します。 GitHub で公開されているパッケージを直接インポートすることができます。 import ( "fmt"…

【関数】go言語の無名関数の基本

無名関数とはその名の通り関数名がない関数です。 なぜ関数名がないのでしょうか?【結論】package mainfunc main() { 変数名 := func (引数 型) 戻り値の型 { // 処理する内容 } } 【理由】通常関数はこう書きます。package mainimport "fmt"// 関数名 func…