LoginSignup
0
1

More than 3 years have passed since last update.

Golang基礎 + MacにGoをインストール

Last updated at Posted at 2020-09-13

はじめに

Golang又はGo言語 とは

・コンパイル言語の中でも特に処理が高速
・2009年にGoogle開発された
・シンプルな構文
・コードの可読性が高い
・初心者はpythonやphpやRubyからのが良い

勉強中なので間違っていたら教えてください。

開発環境

Visual Studio Code
Mac

Goのインストール

ターミナルで実行してください
1. homebrewを最新にします

$ brew update

2. Goのインストール

$ brew install go

3. Goがインストールされたか確認バージョンが返ってくればOK

$ go version

プログラムの基本構造

順次進行

上から順に処理していく

条件分岐

特定の条件の時にAかBなどに分岐する

繰り返し

決まった回数や条件に当てはまる間は繰り返す

Goの記述方法

例)test.go
package main Goのプログラムは1つはmainに属している必要がある
import ("fmt") ←fmtパッケージをインストールしてる

func main(){  ←関数を記述 mainからスタートする
   fmt.Println("hello") これはfmtパッケージを用いてhelloを表示する
} 波かっこ内はブロックという

Goのプログラムはなんらかのパッケージに属している必要があります

実行するにはターミナルに

$ go run ファイル名.go
上記の例だと
$ go run test.go と記述

これでhelloが表示されます。

変数の宣言仕方

例)test.go
package main 

func main(){  
  var num int (var 変数名 
   num = 1 ←1を代入
   fmt.Println(num) 
}

実行すると1が表示される

宣言の省略すると

例)test.go
package main 

func main(){  
  num := 1 ←宣言の省略書き方
    var num int (var 変数名 
      num = 1 この2行と一緒 
   fmt.Println(num) 
}

実行すると1が表示される

Goのデータ型

int 整数
float64 小数
string 文字列
bool turnかfalseが入る

配列の宣言

変数 := [要素数]データ型{データ1、データ2、...}

例)test.go
package main 

func main(){  
  a := [3]string{"sasa","sumika","takako"} ←配列の宣言
   fmt.Println(a[0])
   fmt.Println(a[1]) 
   fmt.Println(a[2])
}

実行すると
こうなります

sasa
sumika
takako

配列の要素数の省略、変更

例)test.go
package main 

func main(){  
  a := [...]string{"sasa","sumika","takako"} ←配列の宣言[...]で要素数を省略できる
  a[0] = "aki"
   fmt.Println(a[0])
   fmt.Println(a[1]) 
   fmt.Println(a[2])
}

実行するとsasaがakiに変更されています

aki
sumika
takako

条件分岐

例)test.go
package main 

func main(){  

 if a := 0 ; a >= 20{
     fmt.Println("20以上")
 } else if a == 0{
     fmt.Println("0です") 
 } else {
     fmt.Println("条件以外")
}

実行すると以下が表示されます。

0です

繰り返しfor

for 変数 := 初期値; 条件; 増減式{}

例)test.go
package main 

func main(){  

for i := 0; i<=4; i++ {
   fmt.Println(i)
}

実行すると以下が表示されます。

0
1
2
3
4

関数定義

func 関数名(引数の定義なくても良い){
retuen ←戻り値がいるなら
}

例)test.go
package main 

func say(){ 引数なし
  fmt.Println("hello")
}

func say1(say string){ ←引数あり (変数 データ型)
 fmt.Println(say)
}

func say2(x,y int) int { ←引数戻り値1つあり (変数 データ型) 戻り値のデータ型{
 return (x+y)
}

func say3(x,y int) (int, int) { ←引数戻り値2つあり (変数 データ型) 戻り値のデータ型{
 return (x+y), (x-y)
}

func main(){
 say() 引数なし
 say1("hi") 引数あり
 result := say2(5,3) 引数戻り値1つあり
 fmt.Println(result)
 result2, result3 := say3(5,2) 引数戻り値2つあり
 fmt.Println(result2, result3)
}

実行すると以下が表示されます。

hello
hi
8
7 3

構造体を定義

type 構造体名 struct {
フィールド
}

例)test.go
package main 

type Dog struct { 構造体
 name string
 age int
}

func main(){ 
 var s Dog 構造体の初期化 (var 変数名 構造体名 
 s.name = "poko"
  s.age = 5

省略バージョン上記と同じ意味
s := Dog{"poko",5}

一部部分に代入
s := Dog{name: "poko}
又は
s := Dog{age: 5}

 fmt.Println(s)
}

実行すると以下が表示されます。

{ poko 5 }

メソッド

例)test.go
package main 

type Dog struct { 構造体
 name string
 age int
}

func (s Dog) aa() { メソッドと構造体を関連付け (変数 構造体名) 変数() {
   fmt.Println(s.name,s.age)
} こうする事で構造体にアクセスできるようになる
s.nameは構造体Dogのnameにアクセスして情報を取得できる

func (s Dog) aa2(name string, age int) { 引数あり
   fmt.Println(name,age)
}

func (s Dog) aa3(age int)  int { 引数あり戻り値あり
   return age*2

func main(){ 
 a1 := Dog{"poko",5}
 a1.aa() 引数なし
 a1.aa2("domu",6) 引数あり
 result := a1.aa3(2) 引数あり戻り値あり
 fmt.Println(result)
}

実行すると以下が表示されます。

poko 5
domu 6
4
0
1
0

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
0
1