株式会社ヴァンデミックシステム

Blog

<スポンサーリンク>

クロージャー

package main

import "fmt"

// インクリメント
func incrementGenenrator() func() int {
    x := 0
    return func() int {
        x++
        return x
    }
}

// 円の面積
func circleArea(pi float64) func(radius float64) float64 {
    return func(radius float64) float64 {
        return pi * radius * radius
    }
}

func main() {
    counter := incrementGenenrator()
    fmt.Println(counter())
    fmt.Println(counter())
    fmt.Println(counter())

    c1 := circleArea(3.14)
    fmt.Println(c1(2))

    c2 := circleArea(3)
    fmt.Println(c2(2))
}

1
2
3
12.56
12

可変長引数

package main

import "fmt"

// func foo(param1, param2 int) とするとfoo(10, 20)の形でしか呼べない
func foo(params ...int) {
    fmt.Println(len(params), params)

    // forの中でひとつひとつ呼ぶ
    for _, param := range params {
        fmt.Println(param)
    }
}

func main() {
    foo()
    foo(10, 20)
    foo(10, 20, 30)

    s := []int{1, 2, 3}
    fmt.Println(s)

    foo(s...)
}

0 []
2 [10 20]
10
20
3 [10 20 30]
10
20
30
[1 2 3]
3 [1 2 3]
1
2
3

if文

package main

import "fmt"

func main() {
    // if elseif else
    num := 9
    if num%2 == 0 {
        fmt.Println("by 2")
    } else if num%3 == 0 {
        fmt.Println("by 3")
    } else {
        fmt.Println("else")
    }

    // and条件 両方いっちしてTrue
    x, y := 10, 12
    if x == 10 && y == 10 {
        fmt.Println("&&")
    }

    // or条件 どちらか一致していればTrue
    if x == 10 || y == 10 {
        fmt.Println("&&")
    }
}
by 3
&&

関数を使う

package main

import "fmt"

// 0で割り切れればOK関数
func by2(num int) string {
    if num%2 == 0 {
        return "ok"
    } else {
        return "no"
    }
}

func main() {
    result := by2(10)

    if result == "ok" {
        fmt.Println("Great")
    }

    // 1行で書く場合
    if result2 := by2(10); result2 == "ok" {
        fmt.Println("Great 2")
    }
}
Great
Great 2

<スポンサーリンク>

コメントを残す

Allowed tags:  you may use these HTML tags and attributes: <a href="">, <strong>, <em>, <h1>, <h2>, <h3>
Please note:  all comments go through moderation.

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)