概要

「処理が速い」「並行処理」が得意ということから、
今後大規模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
}
    関数は複数の戻り値を返すことができる

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 )に悪影響があるため、
注意が必要。


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」ステートメントで変数の宣言を行う。
パッケージ、または、関数で利用できる。


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など


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, など)が必要で、 := での暗黙的な宣言は利用できない。


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


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 文字列→数値、数値→文字列変換


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 = のいずれか)、
変数の型は右側の変数から型推論される。
※右側の変数が型を持っている場合、左側の新しい変数は同じ型になる。


// 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)のみで使える。
※定数は := を使って宣言できない。


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」といったところをみていきます。

广告
将在 10 秒后关闭
bannerAds