#contents

** Go言語とはなにか? [#z670fa75]

- 概要
-- Google
-- シンプルな言語仕様
-- 高速
-- 並行プログラミング

- 公式サイト
-- https://golang.org/

- 知識
-- Unixコマンド
-- C言語

- 環境
-- CentOS7 (Vagrant)
-- sudo yum install golang

- Goインストール

 $ pwd
 /home/vagrant/golang_lessons
 $ sudo yum -y install golang
 $ go version
 go version go1.6.3 linux/amd64

** はじめてのGoプログラム [#nf2aaa6a]

- hello.go

 package main
 
 import "fmt"
 
 func main() {
     fmt.Println("hello world")
 }

- コンパイル

 $ go build hello.go
 $ ls
 hello  hello.go

- 実行

 $ ./hello
 hello world

- コンパイル&実行

 $ go run hello.go
 hello world

- 言語の特徴
-- 1行コメントは「//」複数行コメントは「/* */」
-- 文末に「;」は不要
-- インデントはスペースではなくタブ推奨

** 変数を使ってみよう [#e456795e]

- 基本形

 func main() {
     var msg string
     msg = "hello world"
     fmt.Println(msg)
 }

- 変数宣言と同時に値代入 &color(red){※}; 型 (string) は省略可能

 func main() {
     var msg = "hello world"
     fmt.Println(msg)
 }

- 変数宣言と同時に値代入 &color(red){※}; := を利用した記法

 func main() {
     msg := "hello world"
     fmt.Println(msg)
 }

- 実行結果

 $ go run hello.go
 hello world

- 複数変数を同時に宣言

 func main() {
     // var a, b int
     // a, b = 10, 15
     a, b := 10, 15
 }

- 型が異なる変数を同時に宣言

 func main() {
   var (
       c int
       d string
   )
   c = 20
   d = "hoge"
 }

- 変数名の規則
-- 1文字目が小文字: そのパッケージ内からのみアクセス可
-- 1文字目が大文字: 他のパッケージからもアクセス可
-- 変数、定数、関数についても同じルール

** 基本データ型を使ってみよう [#mc17811c]

- 文字列: string
-- "hello"
-- 初期値: 空文字 "" &color(red){※}; nil では無い

- 整数: int
-- 53
-- 初期値: 0

- 浮動小数: float64
-- 10.2

- 真偽値: bool
-- false / true
-- 初期値: false

- nil

- printf の使い方

 package main
 
 import "fmt"
 
 func main() {
     a := 10
     b := 12.3
     c := "hoge"
     var d bool
     fmt.Printf("a:%d, b:%f, c:%s, d:%t\n", a, b, c, d)
 }

- 実行結果

 $ go run hello.go
 a:10, b:12.300000, c:hoge, d:false

** 定数を使ってみよう [#y563475c]

- 定数
-- const で宣言
-- 値の変更不可

- hello.go

 package main
 
 import "fmt"
 
 func main() {
     const name = "taguchi"
     name = "fkoji"
     fmt.Println(name)
 }

- 実行結果

 $ go run hello.go
 # command-line-arguments
 ./hello.go:7: cannot assign to name

- iota を使った定数宣言 &color(red){※}; 自動で連番の値を付与

 package main
 
 import "fmt"
 
 func main() {
     const (
         sun = iota // 0
         mon // 1
         tue // 2
     )
     fmt.Println(sun, mon, tue)
 
 }

- 実行結果

 $ go run hello.go
 0 1 2

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS