LoginSignup
1
0

More than 5 years have passed since last update.

【Go】A Tour of Go 2日目

Posted at

タダです。

A Tour of Go 2日目で学んだことを記録していきます。

定数

変数宣言のvarをconstに変えると定数になる

func main() {
    const Hello string = "hello"
    Hello = "bye" // Helloに代入はできない
}

ポインタ

ポインタ型の変数は、型の前に*をつける
アドレスは変数の前に&を付ける

func callByValue(i int) {
    i = 20 // 値を上書きする
}

func callByRef(i *int) {
    *i = 20 // 参照先を上書きする
}

func main() {
    var i int = 10
    callByValue(i) // 値を渡す
    fmt.Println(i) // 10
    callByRef(&i) // アドレスを渡す
    fmt.Println(i) // 20
}

関数

関数は func で始まる
引数も戻り値もない場合は次のように宣言する

func hello() {
    fmt.Println("hello")
}

func main() {
    hello()
}

引数がある場合は変数と型を宣言する

func sum(i, j int) {
    fmt.Println(i + j)
}

func main() {
    sum(1,2)
}

エラーを返す場合は、以下のようにする
自作のエラーは、errorsパッケージを用いて作れる

package main

import (
    "errors"
    "fmt"
    "log"
)

func div(i, j int) (int, error) {
    if j == 0 {
        // 自作のエラーを返す
        return 0, errors.New("divied by zero")
    }
    return i / j, nil
}

func main() {
    n, err := div(10, 0)
    if err != nil {
        // エラーを出力しプログラムを終了する
        log.Fatal(err)
    }
    fmt.Println(n)
}

マップ

マップは、キーバリューの対応で保存するデータ構造

var month map[int]string = map[int]string{}

month[1] = "January"
month[1] = "February"
fmt.Println(month) //map[1:Junuary 2:February]

配列/スライス

Goの配列は固定長
可変長配列はスライス

配列は以下のように表現する

var arr[4]string

arr[0] = "a"
arr[1] = "b"
arr[2] = "c"
arr[3] = "d"

fmt.Println(arr[0]) // aと表示される

stringのスライスは次のように宣言する

var s[]string

s := []string{"a", "b", "c", "d"}
fmt.Println(s[0]) // "a"

スライスに対する操作には、append()でスライスの末尾に要素を追加、rangeでは配列やすらいに格納された値を先頭から順番に処理する

package main

import "fmt"

type Vertex struct {
    Lat, Long float64
}

var m = map[string]Vertex{
    "Bell Labs": {40.68433, -74.39967},
    "Google":    {37.4202, -122.08408},
}

func main() {
    fmt.Println(m) //map[Bell Labs:{40.68433 -74.39967} Google:{37.4202 -122.08408}]
}
1
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
1
0