1
1

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.

【Go入門】A tour of Go 【Basics】

Posted at

A tour of Go

Go入門用の公式チュートリアル
https://tour.golang.org

ブラウザ上で実行できるのでGoインストール等は不要。
Offlineで行う方法もWelcome編に記載されている : https://go-tour-jp.appspot.com/welcome/3

この記事では各チュートリアルで個人的に理解しづらかったものや、普段使用する言語と違った部分をメモとして残します。

Basics

packages, variables & functions

パッケージについて

  • 外部パッケージはimportで宣言
  • 外部パッケージ内で使用している変数や関数などの名前は、そのパッケージでエクスポートされている場合に使用できる。エクスポートされている名前は先頭が大文字になる。
exported-names.go
package main

import (
	"fmt"
	"math"
)

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

math.piだと宣言されていないのでエラーになる。

関数について

基本形

func (arg1,arg2...) (return_value) {処理}

引数や戻り値を変数宣言する際は、型宣言は変数の後ろ

functions.go
package main

import "fmt"

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

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

同じ型の場合はまとめて宣言可能

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

複数の戻り値も可能

multiple-result.go
func swap(x, y string) (string, string) {
	return y, x
}

戻り値に変数名を与えると、returnの後ろに指定しなくても戻り値を暗黙で指定できる (naked return statement)

短いコードでは有効だが、それ以外では可読性が下がる

naked-return.go
func add(x, y int) (sum int) {
	sum = x + y
	return 
}

変数について

型宣言するJavascriptと理解するとよい
var : 変数の宣言
const : 定数の宣言 (後述)

ゼロ値

変数に初期値を与えずに宣言するとゼロ値が与えられる
数値型(int,floatなど): 0
bool型: false
string型: "" (空文字列( empty string ))

初期値の与え方

pythonのようにまとめて代入できる

variables-with-initializers.go
package main

import "fmt"

var i, j int

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

暗黙的な型宣言

関数の中では varの代わりに := を用いて型宣言せずに変数宣言ができる

short-variable-declarations.go
func main() {
	c, python, java := true, false, "no!"
	fmt.Println(c, python, java)
}

型変換

変数vを型Tに変換する : T(v)

GoはC言語と異なり、型変換は明示的に変換しないとエラーになる

type-conversion.go
package main

import (
	"fmt"
)

func main() {
	var x, y int = 3, 4
	f := float64(x) + 0.5
	y += 1
	fmt.Println(x, y, f)
}

定数

character, string, boolean, numericのみ
定数は暗黙的宣言 (:=) はできない

数値の定数は高精度な値であり、型が指定されない場合、状況に応じて必要な型を取る

numeric-constants.go
package main

import "fmt"

const (
	// Create a huge number by shifting a 1 bit left 100 places.
	// In other words, the binary number that is 1 followed by 100 zeroes.
	Big = 1 << 100
	// Shift it right again 99 places, so we end up with 1<<1, or 2.
	Small = Big >> 99
)

func needInt(x int) int { return x*10 + 1 }
func needFloat(x float64) float64 {
	return x * 0.1
}

func main() {
	fmt.Println(needInt(Small)) -> 0.2
	fmt.Println(needFloat(Big)) -> 1.2676506002282295e+29
}

SmallもBigもintかfloatか決まっていないが、それぞれ関数で要求されているデータ型にマッチするように型を取っている。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?