0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

A Tour of Go【Packages, variables, and functions.】まとめ

Last updated at Posted at 2024-12-15

はじめに

A Tour of Goについて勉強になった箇所をまとめる。

パッケージ参照

最初の文字が大文字で始まる名前は、外部のパッケージから参照できるエクスポート(公開)された名前。

パッケージをインポートすると、そのパッケージがエクスポートしている名前を参照することができる。
エクスポートされていない名前(小文字ではじまる名前)は、外部のパッケージからアクセスすることはできない。

↓ Pi は math パッケージでエクスポートされている。

package main

import (
	"fmt"
	"math"
)

func main() {
	fmt.Println(math.Pi)
}

引数の型定義の省略

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

x int, y int を x, y int へ省略している。

package main

import "fmt"

func add(x, y int) int {
	return x + y
}

func main() {
	fmt.Println(add(42, 13))
}

複数の戻り値

関数は複数の戻り値を返すことができる。

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)
}

Named return values

名前をつけた戻り値の変数を使うと、 return ステートメントに何も書かずに戻すことができる。

package main

import "fmt"

func split(sum int) (x, y int) {
	x = sum * 4 / 9
	y = sum - x
	return
}

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

変数

変数のリスト

varでは複数の変数の最後に型を書くことで、変数のリストを宣言できる。

package main

import "fmt"

var c, python, java bool

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

初期化子

初期化子が与えられている場合は型を省略でき、その変数は初期化子が持つ型になる。

package main

import "fmt"

var i, j int = 1, 2

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

暗黙的な型宣言

関数の中では、 var 宣言の代わりに、短い := の代入文を使い、暗黙的な型宣言ができる。
※関数の外では、キーワードではじまる宣言( var, func, など)が必要で、 := での暗黙的な宣言は利用できない

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)
}

基本型一覧

bool

string

int  int8  int16  int32  int64
uint uint8 uint16 uint32 uint64 uintptr

byte // uint8 の別名

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

float32 float64

complex64 complex128

ゼロ値

変数に初期値を与えずに宣言すると、ゼロ値( zero value )が与えられる。

ゼロ値は型によって以下のように与えられます:

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

型変換

変数v 、型T があった場合、 T(v)は、変数vT型へ変換する。

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)
}
/// 3 4 5

型推論

明示的な型を指定せずに変数を宣言する場合( := や var = のいずれか)、変数の型は右側の変数から型推論される。

package main

import "fmt"

func main() {
	v := 42 // change me!
	fmt.Printf("v is of type %T\n", v)
}
/// v is of type int

定数

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

package main

import "fmt"

const Pi = 3.14

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

	const Truth = true
	fmt.Println("Go rules?", Truth)
}
/// Hello 世界
/// Happy 3.14 Day
/// Go rules? true
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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?