【GO】Golang ~ 入門編 ~

■ はじめに

シリコンバレーで流行っているプログラミング言語とは

https://www.youtube.com/watch?v=bro2Y22QiHs&t=252s

で、Python だけでなく、Go言語も流行ってるらしいので
どんな言語なのか、かーるく以下のサイトから勉強してみる。
(Go I だけが無料で、Go II - IVは有料だった。。。)

https://prog-8.com/languages/go

2020/04/16追記。

YouTube もあった。

https://www.youtube.com/watch?v=jJqH_CVcHKM&list=PLVk26HcHqpz3Ts5uteLPTAVcINxFKJw05&index=2

目次

【1】Go言語 (Golang)
【2】特徴 / メリット
 1)サポートOS
【3】他言語との比較(個人的なメモ)
 1)class に当たる構文がない
 2)平行プログラミング
【4】Hello World
 例1:コンソールアプリ
 例2:Webアプリ(標準ライブラリ豊富さ)
【5】開発環境

【1】Go言語 (Golang)

* 2009年 Googleが開発したオープンソースのプログラミング言語
* コンパイル言語
 => 個人的な印象としては、「現代版・C言語」(構造体/アドレスもあるし)

https://golang.org/

Go is an open source programming language
 that makes it easy to build simple, reliable, and efficient software.

reliable : 信頼できる、efficient : 効率的な(要するに「早い」)

【2】特徴 / メリット

以下の動画を(飛ばしながら)見るといいかも。

https://www.youtube.com/watch?v=SjfYHqS7eo4

[1] 学習コストが(比較的)少ない
  => 文法がシンプル
  (whileすらない。
   それをカバーする標準ライブラリが豊富!
   以下の「例2」を参照)

[2] チーム開発に向いている ★結構、これ大きいかも★
  => 標準で文法チェック機能(gofmt, goimports etc)があり、豊富

[3] 処理が高速
  => コンパイル言語。 ポインタもある

[4] クロスプラットフォーム対応
 => 以下の「1)サポートOS」からもわかる通り、
  主要OS全てサポートされている(Javaよりも優れている)

1)サポートOS

 * Linux
 * Mac OS
 * Windows (From ver1.0, 2013-03)
 * Android
 * iOS

【3】他言語との比較(個人的なメモ)

1)class に当たる構文がない

 ⇒ ただし、構造体やインターフェイスはあるので、
  オブジェクト指向でコードを構築することは可能

https://qiita.com/kitoko552/items/a6698c68379a8cd8b999
2)平行プログラミング

 ⇒ 「ゴールーチン」「チャネル」などの概念があり、標準でサポート
 ⇒ 平行(Concurrency)と並列(Parallelism)は別の概念という考え方
  ・平行:同時に質の異なるタスクを扱う
  ・並列:同時に質の同じタスクを扱う

【4】Hello World

例1:コンソールアプリ

package main

func main() {
    // 変数messageを定義し、「Hello, world」を代入
    var message string = "Hello, world
    /*
    以下でもいいが、関数内でしか使えない
    message := "Hello, world"
      */ 

    // 変数messageの値を出力
    println(message) 
}

例2:Webアプリ(標準ライブラリ豊富さ)

package main

import (
  "fmt"
  "net/http"
)

// Goはm前に出力を前に書いて、後ろに入力を書く習慣らしい
func handler(w http.ResponseWriter, r *http.Request) {
  fmt.Fprintln(w, "Hello world!!")
}

func main() {
  // ハンドラを登録
  http.HandleFunc("/", handler)

  // サーバの起動
  http.ListenAndServe(":18080", nil)
}

実行について

実行後に、ブラウザで以下のURLにアクセスしたら、
「Hello world!!」が表示される(localhostだと表示されんかった)

http://http://127.0.0.1:18080/

【5】開発環境

色々あるらしいが、VS Codeでできるらしい
以下の関連記事を参照のこと。

Golang ~ 環境設定編 ~
https://dk521123.hatenablog.com/entry/2020/04/03/000000

関連記事

Golang ~ 環境設定編 ~
https://dk521123.hatenablog.com/entry/2020/04/03/000000
Golang ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/04/05/000000
Golang ~ 基本編 / 関数 ~
https://dk521123.hatenablog.com/entry/2021/05/03/000000
Golang ~ 基本編 / 構造体 ~
https://dk521123.hatenablog.com/entry/2021/05/01/000000
Golang ~ 基本編 / ポインタ/アドレス ~
https://dk521123.hatenablog.com/entry/2021/05/02/000000
Golang ~ 基本編 / インターフェイス
https://dk521123.hatenablog.com/entry/2021/05/04/000000
Golang ~ 並列プログラミング(Goルーチン/チャネル) ~
https://dk521123.hatenablog.com/entry/2021/05/05/000000
IT技術の学習サイト
https://dk521123.hatenablog.com/entry/2020/02/29/003619