LoginSignup
0
0

爆速でGo言語の変数を説明する

Posted at

はじめに

皆さんGo言語書いてますか? 
私も最近Go言語を書き始めました。せっかく学習しているので、私が理解できたところは記事として残そうと思います。
今回はGoの変数についてです。

※作成者はこの記事を爆速(2時間くらい)で作ったため、誤字脱字があると思います。ご了承ください。

※この記事では変数の全てを説明していないので、詳しく知りたい方は公式ドキュメントをご覧ください。

そもそもGo言語とは??

Go言語は、Googleによって開発されたプログラミング言語で、シンプルで効率的な設計が特徴です。Goは、コンパイル速度が速く、メモリ使用量が少ないため、大規模かつ分散したシステム向けの開発に適しています。また、静的型付けとガベージコレクションを組み合わせ、安全で信頼性の高いコードを容易に記述できるようになっています。Goは、シンプルな文法や強力な標準ライブラリなど、開発者が生産性を高めるための機能を提供しています。

ってChatGPTが言ってます。
実際に書いてみて、コードをシンプルに書けると感じます。

[本題] Go言語の変数

変数の宣言

Go言語の型の宣言は2種類あります。

	//var 変数名 宣言する型
	var i int //int型の初期値は0
	
	//Go言語に型を任せる方法
	i2 := 1 //この場合はint型
	i3 := "aaa" //この場合はstring型

変数iのように自分で型を宣言する方法と、
変数i2,i3のように型推論のように宣言することができます。

int型

	var i int
	var i2 int8
	var i3 int16
	var i4 int32
	var i5 int64

int型は整数を扱う型です。
他の言語と同じくint型は使用できます。
Go言語ではビットの指定ができるため、メモリを効率的に使えるのもメリットだと思います。
ビット指定ができる分、最小値と最大値が変わるため、用途によって使い分ける必要があります。
intで宣言するとプラットフォーム依存になるため、その点も注意が必要です。

bit 最小値  最大値 
int8 8 -128 127
int16 16 -32768 32767
int32 32 -2147483648 217483647
int64 64 -9223372036854775808 9223372036854775807
int

int型の注意
各int型は異なる型と扱われるため、計算をする場合は同じ方にする必要があります。

var i int
var i2 int8
i = 10
i2 = 10

i3 := i + i2 //型が違うためコンパイルエラーになる

float型

	var fl float64
	var fl2 float32
	fl3 := 1.1 //暗黙的にfloat64になる

float型は浮動小数を扱う型です。
int型と同じく64bit,32bitと指定することができます。
型の指定をしなかった場合は必ず64bitになります。

float型の注意
int型と同じく
各float型も異なる型と扱われるため、計算をする場合は同じ方にする必要があります。

var fl float64
var fl2 float32
fl := 1.1
fl2 := 1.1
f3 := fl + fl2 //型が違うためコンパイルエラーになる

bool型

	var b bool //初期値はfalse
	b2 := true

bool型は真偽値を扱う型です。
特に他の言語との違いは特にないです。

string型

	var s string
	s = "hello" //文字を代入

	s2 := "hello"

string型は文字を扱う型です。
他の言語との違いは特にないです。

byte型

	var byteA byte
	byteA = 72
	fmt.Println(byteA)         //72と出力される
	fmt.Println(string(byteA)) //「H」と出力される

byte型は文字を数字としてを扱う型です。
byte型をstring()を実行すると、byte型がstring型に変換されます。
今回は72をstring型にして、Hと出力されます。

配列型

	var arr [3]int
	arr[0] = 1
	arr[1] = 2
	arr[2] = 3

	fmt.Println(arr) //[1 2 3]と出力される

配列型は配列を格納する型です(いきなり小泉構文)
宣言時に要素数を指定して、宣言することができます。

配列型の注意
配列型は他の言語と異なり、要素数を変更することができません。要素数を変更して使う場合はスライスを使う必要があります。
配列を使うときは要素数が変更にならないように実装しましょう!

var arr [3]int
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr = append(arr,1) //要素数が変更できないため、エラーになる
arr := []int{1, 2, 3} //これはスライス
arr = append(arr, 4)  //配列に値が挿入される

fmt.Println(arr) //[1 2 3 4]と出力される

interface型

	var it interface{}

	it = 1
	fmt.Println(it) //int型の1が出力される
	it = "aa"
	fmt.Println(it) //string型のaaが出力される
	it = [3]int{1, 2, 3}
	fmt.Println(it) //配列型の[1 2 3]が出力

interface型はどの型も代入できる型です。
動的言語みたいな動きができるんですねー
しかし、あくまでinterface型であるため、各型のメソッドや、計算はすることができません。
表示するだけなら問題なく使用することができます。

	var it interface{}

	it = 1

	i := it + 1 //int型ではないため計算できない
0
0
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
0