go言語入門学習サイト

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

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

go言語の繰り返しは他言語にも見られるようにfor文を使います。
そしてそれにifを使い条件に合った値を出す事ができます。

【基本】

for 繰り返し条件 {
// 繰り返し
}

for文でカウンターを初期化して繰り返します。
繰り返しにはi++ インクリメントで繰り返し処理をします。



func 変数()
if 条件式1 {
  return 処理
{
return fmt.取り出す値
}

for文はifと合わす事で計算をして条件満たした値を出すこともできます。

【具体例】

Go言語の if ステートメントは、先ほどの for ループと同様に、括弧 ( ) は不要で、中括弧 { } は必要です



package main

import (
"fmt"
"math"
)

func sqrt(x float64) string {
if x < 0 {
return sqrt(-x) + "i"
}
return fmt.Sprint(math.Sqrt(x))
}

func main() {
fmt.Println(sqrt(2), sqrt(-4))
}




1.4142135623730951 2i

ループ処理にifを使うときは中かっこが必要になります。
func sqrt(x float64) stringの部分の中かっこ内で演算処理をします。
float64は浮動小数でそれをreturn sqrt(-x) + "i"で2iとなります。

func main() {
fmt.Println(sqrt(2), sqrt(-4))
}により1.4142135623730951となります。
sqrtは平方根の値を出します。



if ステートメントは、 for のように、条件の前に、評価するための簡単なステートメントを書くことができます。

ここで宣言された変数は、 if のスコープ内だけで有効です。






package main

import (
"fmt"
"math"
)

func pow(x, n, lim float64) float64 {
if v := math.Pow(x, n); v < lim {
return v
}
return lim
}

func main() {
fmt.Println(
pow(3, 2, 10),
pow(3, 3, 20),
)
}



9 20

if v := math.Pow(x, n); v < lim {
return v
}の中だけで有効な処理です。

math.Pow(x, n)はx数値、nは回数で
pow(3, 2, 10)なら3を2回かけてlimの10のが大きいから<ので9が表示されます。

一方でpow(3, 3, 20)は3が3回かけるで27となりv < limなので20が表示されます。





TechAcademy [テックアカデミー]


【アイデミー】AIを学んで一発逆転のキャリアチェンジ!



取材やお仕事紹介などはこちらからお気軽にご連絡下さい。
ysa7825@gmail.com

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

go言語の定数って聞くけどそもそも定数ってどんな意味か分からない。
そんな方のために定数について解説します。

【結論】

定数は一度決めたらもう変更する事ができない値で文字列や整数などがあります。


【理由】

定数を使うのは値を変えたくない時です。
例えば消費税を計算するシステムなのに税の値が変わったら無意味ですよね。
そんな時に使います。

使い方は
const 定数名 = 定数値
という書き方をします。

const M = 20
って書いたのに
これに後から
M =100
としてもエラーになります。
これが基本的な動きです。

【具体例】

package main

import "fmt"

const Pi = 3.14

func main() {
const World = "世界"
fmt.Print("Hello", World)
fmt.Println("Happy", Pi, "Day")

const Truth = true
fmt.Println("Go rules?", Truth)
}



Hello世界Happy 3.14 Day
Go rules? true




【解説】

constに固定したい値を入れます。
整数以外も文字列や浮動小数に使えます。
これは先程述べたように後から
World = "ワールド"
としてもエラーになります。

定数のconstで宣言されたのをPrintで出力すると
Hello世界Happy 3.14 Day
Go rules? true
となります。

定数は絶対に変えたくない値でconstで呼び出すって覚えておきましょう。





TechAcademy [テックアカデミー]


【アイデミー】AIを学んで一発逆転のキャリアチェンジ!



取材やお仕事紹介などはこちらからお気軽にご連絡下さい。
ysa7825@gmail.com

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

go言語をやってるけどサーバを良く知らない。
確かに知らなくても動かせるが基礎としては知るべきです。

【結論】

サーバはコンピュータの向こうにあるサービスでWebサイトなどもサーバです。

【理由】

私達がスマホでWebサイトを見たいとなれば
私達がクライアントどサーバと言われるコンピュータ内にあるサービスがリクエストに対して答えてそれを表示します。


【具体例】

Webプラウザは「ハイパー・テキスト・トランスファープロトコル (HTTP)」を使ってWeb サーバーと通信して、HTTP 要求と言います。
私達が良くやるボタンクリックして送信や入力フォーム入れて送信がそうなりま。

【結論】

go言語をやる上でサーバは基礎として理解しましょう。
サーバはコンピュータ内のデータでそこにリクエストしてそれを扱える。
WebサイトなどはHTTP 要求と言う。





TechAcademy [テックアカデミー]


【アイデミー】AIを学んで一発逆転のキャリアチェンジ!



取材やお仕事紹介などはこちらからお気軽にご連絡下さい。
ysa7825@gmail.com

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

goのポインタは、メモリアドレスを格納する変数です。

【結論】

変数からポインタを取得する場合は変数の前に&をつけます。

【どういうものか】

変数の前に&をつけると変数のメモリを返します。
このような形です。

p = 21 // ポインタpを通してiへ値を代入する

メモリは、1バイト毎に番号がつけられ、区別されています。

0x1040a0d0のように16進数で表示されます。


【具体例】

package main

import "fmt"

func main() {
i := 10
p := &i
fmt.Println(p)
}



0xc000016088

package main

import "fmt"

func main() {
i := 10
p := &i

*p = 11
fmt.Println(*p)
}

11

【解説】

i := 10が格納されたアドレスが0xc000016088です。
pがポインタ変数となりそこに格納されたアドレスが16進数となり出力されます。

ポインタ変数は値を入れ替える事もできます。
i := 10をpに格納をして *p = 11で11に入れ替えす。
値を入れ替える時は*pと書きます。
これで11がでます。

かなりざっくりとやりましたがなかなか理解が大変かもしれません。
今後はさらに細かく解説していきます。





TechAcademy [テックアカデミー]


【アイデミー】AIを学んで一発逆転のキャリアチェンジ!



取材やお仕事紹介などはこちらからお気軽にご連絡下さい。
ysa7825@gmail.com

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

go言語の構造体とは他のプログラミング言語のクラスに相当する機能です。

【結論】

type 構造体名 struct {} で定義し、フィールド名と型名をすると動かせます。

【理由】

構造体があると良い理由は複数の値をひとまとめに出来るからです。
わざわざ一つ一つ定義したらコードが長くなり訳わからなくなるからそれをひとまとめにしたものです。

書き方は

struct {
変数宣言する
}

structの後に中に保管したい変数を変数宣言をします。

var 変数 struct{}
このように宣言すると構造体の中にある変数に値を設定できます。


【具体例】

package main

import "fmt"

type Rectangle struct {
width ,height int
}

func main() {
r := Rectangle{width:20, height: 30}
fmt.Println(r)
}



{20 30}

package main

import "fmt"

type Rectangle struct {
width, height int
}

func (r Rectangle) Area() int {
return r.width * r.height
}

func main() {
r := Rectangle{width: 20, height: 30}
area := r.Area()
fmt.Println(area)
}

600


【解説】

①はRectangle変数にwidth ,heightの変数を保管します。
それを関数内でRectangle{width:20, height: 30}それぞれに値を入れて{20 30}となります。

②はr := Rectangle{width: 20, height: 30}で
{20 30}となりRectangle変数に入れます。

area := r.Area()で変数areaを変数Area()に代入して、関数内でreturn r.width * r.heightによりr.width r.heightをかけて戻り値となり600となります。





TechAcademy [テックアカデミー]


【アイデミー】AIを学んで一発逆転のキャリアチェンジ!



取材やお仕事紹介などはこちらからお気軽にご連絡下さい。
ysa7825@gmail.com

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

go言語ではJavaScriptみたくwhile文はありません。

while文はないけどfor文で実は同様な処理をできます。
それを実際にやってみます。

【やり方】

for i <数値 {
処理
}

forの後に条件式を入れてそれがtrueつまり真ならそれが終わるまで繰り返しwhile文と同様な動きします。


【コード】

package main

import "fmt"

func main() {
sum := 0
for i := 0; i < 10; i++ {
sum += i
}
fmt.Println(sum)
}

45


【解説】

sum := 0で変数sumが0です。
for i := 0; i < 10; i++は変数iを0から9まで足します。

それを sum += iでiをsumに代入します。
0から9を足したので条件がfalseになり45になります。








TechAcademy [テックアカデミー]


【アイデミー】AIを学んで一発逆転のキャリアチェンジ!



取材やお仕事紹介などはこちらからお気軽にご連絡下さい。
ysa7825@gmail.com

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

go言語の無名関数とはその名の通り定義する名前がない関数の事です。
どのように動くかを解説します。

【どのようなものか?】

func(引数1, 引数2, …) 戻り値の型1, 戻り値の型2, … {
  関数の本体
}

書き方自体はとてもシンプルです。
関数に直接変数を入れられます。

メリットとしては一度しか使わない関数なら名前を考える手間がなくなり、かつややこしさがなくなりエラーの原因にならない事です。


【具体例】


package main

import "fmt"

func main() {

hello := func(greeting string) {
fmt.Println(greeting)
}
hello("Good morning")
}


Good morning



package main

import "fmt"

func main() {

func(greeting string) {
fmt.Println(greeting)
}("Good evening")
}



Good evening


【解説】

①はhelloにhello("Good morning")を入れます。
それを戻り値greetingに入れGood morningと表示されます。

②は違うパターンで書いてます。
引数なしでGood eveningを書いて戻り値greetingでGood eveningと標準します。







TechAcademy [テックアカデミー]


【アイデミー】AIを学んで一発逆転のキャリアチェンジ!



取材やお仕事紹介などはこちらからお気軽にご連絡下さい。
ysa7825@gmail.com