1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Golang チュートリアル その1

Posted at

##概要
「処理が速い」「並行処理」が得意ということから、
今後大規模webサービスなどで重宝されると思いましたので、
学習していきたいと思います。

##参考サイト
以下を実施してみました。

Welcome to a tour of Go

##環境
GoogleChrome
※ブラウザ操作だけで学習できるため、エディタを用意する必要がありません。
※CentOS8へのGoインストール手順です。よろしければ、ご活用ください。
CentOS8へのGo言語インストール手順

##基本操作

Welcome!

Hello Worldの実行手順です。

##基本的な書き方

Packages, variables, and functions.

Go プログラムの基本的なコンポーネントを学びます。

  • 「package main」から始まる。

すべてはここから始まる

  • 関数について

引数に設定する関数には、型名を書く必要がある

//xとyが該当
func add(x int, y int) int {
	return x + y
}

ただし、関数の2つ以上の引数が同じ型である場合には、最後の型を残して省略して記述できる。

//xとyが該当
func add(x, y int) int {
	return x + y
}
  • 関数は複数の戻り値を返すことができる
func.go

package main

import "fmt"

//関数側
func swap(x, y string) (string, string) {
        return y, x
}

//呼び出す側
func main() {
        a, b := swap("hello", "world")
        fmt.Println(a, b)
}

//実行
go run func.go

//実行結果
world hello
  • 戻り値となる変数に名前をつける

戻り値となる変数に名前をつけることができる。
戻り値に名前をつけると、関数の最初で定義した変数名として扱われます。

名前をつけた戻り値の変数を使うと、
return ステートメントに何も書かずに戻すことができる。
※長い関数で使うと読みやすさ( readability )に悪影響があるため、
 注意が必要。

returnValueName.go

package main

import "fmt"

//(x, y int)の部分が名前付き変数
func split(sum int) (x, y int) {
	x = sum * 4 / 9
	y = sum - x
	return
}

func main() {
	fmt.Println(split(17))
}

//実行
go run returnValueName.go

//実行結果
7 10

##変数

  • 変数の宣言

「var」ステートメントで変数の宣言を行う。
パッケージ、または、関数で利用できる。

var.go

package main

import "fmt"

//グローバルに宣言 ※boolが型
var c, python, java bool

func main() {
	var i int
	fmt.Println(i, c, python, java)
}

//実行
go run var.go

//実行結果
0 false false false
  • 変数に初期値を与える

初期値が与えられている場合、型を省略できる。
その変数は初期値が持つ型になります。
※例: 数字->int , 文字列->stringなど

giveVarInitialValue.go

package main

import "fmt"

var i, j int = 1, 2

func main() {
	//c->bool ,python->bool ,java->string
	var c, python, java = true, false, "no!"
	fmt.Println(i, j, c, python, java)
}

//実行
go run giveVarInitialValue.go

//実行結果
1 2 true false no!
  • 変数の宣言を省略

関数の中では、 var 宣言の代わりに、短い := の代入文を使い、
暗黙的な型宣言ができる。

###※関数の外では、キーワードではじまる宣言( var, func, など)が必要で、 := での暗黙的な宣言は利用できない。

varDeclarationOmitted.go

package main

import "fmt"

func main() {
	var i, j int = 1, 2
	//暗黙的宣言
	k := 3
	c, python, java := true, false, "no!"

	fmt.Println(i, j, k, c, python, java)
}

//実行
go run varDeclarationOmitted.go

//実行結果
1 2 3 true false no!
  • 基本の型

次のとおりです。

//型の紹介のみ

bool

string

int  int8  int16  int32  int64
uint uint8 uint16 uint32 uint64 uintptr

byte // uint8 の別名

rune // int32 の別名
     // Unicode のコードポイントを表す

float32 float64

complex64 complex128
  • 変数に初期値を与えずに宣言

その場合、ゼロ値が与えられます。

ゼロ値は型によって以下のように与えられる。

数値型(int,floatなど): 0
bool型: false
string型: "" (空文字列( empty string ))

varNoInitialVal.go

package main

import "fmt"

func main() {
	var i int
	var f float64
	var b bool
	var s string
	fmt.Printf("%v %v %v %q\n", i, f, b, s)
}

//実行
go run go:varNoInitialVal.go

//実行結果
0 0 false ""
  • 型変換

少数点→整数の変換について
※数値から文字列への変換に関しては、また別処理が必要。。
golang 文字列→数値、数値→文字列変換

typeConv.go

package main

import (
	"fmt"
	"math"
)

func main() {
	var x, y int = 3, 4
	var f float64 = math.Sqrt(float64(x*x + y*y))
		var z uint = uint(f)
	fmt.Println(x, y, z)
}

//実行
go run typeConv.go

//実行結果
3 4 5
  • 型推論

明示的な型を指定せずに変数を宣言する場合( := や var = のいずれか)、
変数の型は右側の変数から型推論される。
※右側の変数が型を持っている場合、左側の新しい変数は同じ型になる。

typeInference.go

// i はint型のため、vもint型になる。
package main

import "fmt"

var i int

func main() {
	v := i
	fmt.Printf("v is of type %T\n", v)
}

//実行
go run typeInference.go

//実行結果
v is of type int

##定数
定数は、 constを使って変数と同じように宣言する。
定数は、文字(character)、文字列(string)、boolean、数値(numeric)のみで使える。
※定数は := を使って宣言できない。

constant.go

package main

import "fmt"

const Pi = 3.14

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

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

//実行
go run constant.go

//実行結果
Hello 世界
Happy 3.14 Day
Go rules? true

##まとめ
基本的なところをみていきました。
次回は、「For」や「if」といったところをみていきます。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?