Closed28

[Go] Control Flow

cacao_catcacao_cat

Nested Loop

package main

import (
	"fmt"
)

func main () {
	// for init; condition; post {}
	for i := 0; i <= 10; i++ {
		fmt.Printf("The Outer Loop: %d\n", i)
		for j := 0; j < 3; j++ {
			fmt.Printf("\t\t The Inner Loop: %d\n", j)
		}

	}
}

The Outer Loop: 0
                 The Inner Loop: 0
                 The Inner Loop: 1
                 The Inner Loop: 2
The Outer Loop: 1
                 The Inner Loop: 0
                 The Inner Loop: 1
                 The Inner Loop: 2
The Outer Loop: 2
                 The Inner Loop: 0
                 The Inner Loop: 1
                 The Inner Loop: 2
The Outer Loop: 3
                 The Inner Loop: 0
                 The Inner Loop: 1
                 The Inner Loop: 2
The Outer Loop: 4
                 The Inner Loop: 0
                 The Inner Loop: 1
                 The Inner Loop: 2
The Outer Loop: 5
                 The Inner Loop: 0
                 The Inner Loop: 1
                 The Inner Loop: 2
The Outer Loop: 6
                 The Inner Loop: 0
                 The Inner Loop: 1
                 The Inner Loop: 2
The Outer Loop: 7
                 The Inner Loop: 0
                 The Inner Loop: 1
                 The Inner Loop: 2
The Outer Loop: 8
                 The Inner Loop: 0
                 The Inner Loop: 1
                 The Inner Loop: 2
The Outer Loop: 9
                 The Inner Loop: 0
                 The Inner Loop: 1
                 The Inner Loop: 2
The Outer Loop: 10
                 The Inner Loop: 0
                 The Inner Loop: 1
                 The Inner Loop: 2
cacao_catcacao_cat
package main

import (
	"fmt"
)

func main () {
	x := 1
	for {
		if x < 10 {
			break
		}
		fmt.Println(x)
		x++
	} 
	fmt.Println("done.")
	
}

done.
cacao_catcacao_cat
package main

import (
	"fmt"
)

func main () {
	x := 43 / 40
	fmt.Println(x)
	
}

1

商が出る

cacao_catcacao_cat
func main () {
	x := 43 % 40
	fmt.Println(x)
	
}

3

余りが出る

cacao_catcacao_cat
func main () {
	x := 0
	for {
		if x > 100 {
			break
		}
		if x%2 != 0{
			continue
		}
		fmt.Println(x)
		x++
	}
	fmt.Println("Done.")
}

0
出力が終わらない。

インクリメントが始まらないから、0のまま。
Continueが始まり、ループの先頭に戻るから。インクリメントをもっと前に持ってこないといけない。

cacao_catcacao_cat
func main () {
	for i := 33; i <= 122; i++ {
		fmt.Printf("%v\n%U", i, i)
		fmt.Println(i)
	}


33
U+002133
34
U+002234
35
U+002335
36
U+002436
37
U+002537
38
U+002638
39
U+002739
40
U+002840
41
U+002941
42
U+002A42
43
U+002B43
44
U+002C44
45
U+002D45
46
U+002E46
47
U+002F47
48
U+003048
49
U+003149
50
U+003250
51
U+003351
52
U+003452
53
U+003553
54
U+003654
55
U+003755
56
U+003856
57
U+003957
58
U+003A58
59
U+003B59
60
U+003C60
61
U+003D61
62
U+003E62
63
U+003F63
64
U+004064
65
U+004165
66
U+004266
67
U+004367
68
U+004468
69
U+004569
70
U+004670
71
U+004771
72
U+004872
73
U+004973
74
U+004A74
75
U+004B75
76
U+004C76
77
U+004D77
78
U+004E78
79
U+004F79
80
U+005080
81
U+005181
82
U+005282
83
U+005383
84
U+005484
85
U+005585
86
U+005686
87
U+005787
88
U+005888
89
U+005989
90
U+005A90
91
U+005B91
92
U+005C92
93
U+005D93
94
U+005E94
95
U+005F95
96
U+006096
97
U+006197
98
U+006298
99
U+006399
100
U+0064100
101
U+0065101
102
U+0066102
103
U+0067103
104
U+0068104
105
U+0069105
106
U+006A106
107
U+006B107
108
U+006C108
109
U+006D109
110
U+006E110
111
U+006F111
112
U+0070112
113
U+0071113
114
U+0072114
115
U+0073115
116
U+0074116
117
U+0075117
118
U+0076118
119
U+0077119
120
U+0078120
121
U+0079121
122
U+007A122
cacao_catcacao_cat

#をつけると、コードポイントと記号が表示される
全てのコードポイントと、ASCII文字

func main () {
	for i := 33; i <= 122; i++ {
		fmt.Printf("%v\n%#U", i, i)
		fmt.Println(i)
	}

33
U+0021 '!'33
34
U+0022 '"'34
35
U+0023 '#'35
36
U+0024 '$'36
37
U+0025 '%'37
38
U+0026 '&'38
39
U+0027 '''39
40
U+0028 '('40
41
U+0029 ')'41
42
U+002A '*'42
43
U+002B '+'43
44
U+002C ','44
45
U+002D '-'45
46
U+002E '.'46
47
U+002F '/'47
48
U+0030 '0'48
49
U+0031 '1'49
50
U+0032 '2'50
51
U+0033 '3'51
52
U+0034 '4'52
53
U+0035 '5'53
54
U+0036 '6'54
55
U+0037 '7'55
56
U+0038 '8'56
57
U+0039 '9'57
58
U+003A ':'58
59
U+003B ';'59
60
U+003C '<'60
61
U+003D '='61
62
U+003E '>'62
63
U+003F '?'63
64
U+0040 '@'64
65
U+0041 'A'65
66
U+0042 'B'66
67
U+0043 'C'67
68
U+0044 'D'68
69
U+0045 'E'69
70
U+0046 'F'70
71
U+0047 'G'71
72
U+0048 'H'72
73
U+0049 'I'73
74
U+004A 'J'74
75
U+004B 'K'75
76
U+004C 'L'76
77
U+004D 'M'77
78
U+004E 'N'78
79
U+004F 'O'79
80
U+0050 'P'80
81
U+0051 'Q'81
82
U+0052 'R'82
83
U+0053 'S'83
84
U+0054 'T'84
85
U+0055 'U'85
86
U+0056 'V'86
87
U+0057 'W'87
88
U+0058 'X'88
89
U+0059 'Y'89
90
U+005A 'Z'90
91
U+005B '['91
92
U+005C '\'92
93
U+005D ']'93
94
U+005E '^'94
95
U+005F '_'95
96
U+0060 '`'96
97
U+0061 'a'97
98
U+0062 'b'98
99
U+0063 'c'99
100
U+0064 'd'100
101
U+0065 'e'101
102
U+0066 'f'102
103
U+0067 'g'103
104
U+0068 'h'104
105
U+0069 'i'105
106
U+006A 'j'106
107
U+006B 'k'107
108
U+006C 'l'108
109
U+006D 'm'109
110
U+006E 'n'110
111
U+006F 'o'111
112
U+0070 'p'112
113
U+0071 'q'113
114
U+0072 'r'114
115
U+0073 's'115
116
U+0074 't'116
117
U+0075 'u'117
118
U+0076 'v'118
119
U+0077 'w'119
120
U+0078 'x'120
121
U+0079 'y'121
122
U+007A 'z'122
cacao_catcacao_cat
func main () {
	for i := 33; i <= 122; i++ {
		fmt.Printf("%v\t%#U\n", i, i)
		fmt.Println(i)
	}

33      U+0021 '!'
33
34      U+0022 '"'
34
35      U+0023 '#'
35
36      U+0024 '$'
36
37      U+0025 '%'
37
38      U+0026 '&'
38
39      U+0027 '''
39
40      U+0028 '('
40
41      U+0029 ')'
41
42      U+002A '*'
42
43      U+002B '+'
43
44      U+002C ','
44
45      U+002D '-'
45
46      U+002E '.'
46
47      U+002F '/'
47
48      U+0030 '0'
48
49      U+0031 '1'
49
50      U+0032 '2'
50
51      U+0033 '3'
51
52      U+0034 '4'
52
53      U+0035 '5'
53
54      U+0036 '6'
54
55      U+0037 '7'
55
56      U+0038 '8'
56
57      U+0039 '9'
57
58      U+003A ':'
58
59      U+003B ';'
59
60      U+003C '<'
60
61      U+003D '='
61
62      U+003E '>'
62
63      U+003F '?'
63
64      U+0040 '@'
64
65      U+0041 'A'
65
66      U+0042 'B'
66
67      U+0043 'C'
67
68      U+0044 'D'
68
69      U+0045 'E'
69
70      U+0046 'F'
70
71      U+0047 'G'
71
72      U+0048 'H'
72
73      U+0049 'I'
73
74      U+004A 'J'
74
75      U+004B 'K'
75
76      U+004C 'L'
76
77      U+004D 'M'
77
78      U+004E 'N'
78
79      U+004F 'O'
79
80      U+0050 'P'
80
81      U+0051 'Q'
81
82      U+0052 'R'
82
83      U+0053 'S'
83
84      U+0054 'T'
84
85      U+0055 'U'
85
86      U+0056 'V'
86
87      U+0057 'W'
87
88      U+0058 'X'
88
89      U+0059 'Y'
89
90      U+005A 'Z'
90
91      U+005B '['
91
92      U+005C '\'
92
93      U+005D ']'
93
94      U+005E '^'
94
95      U+005F '_'
95
96      U+0060 '`'
96
97      U+0061 'a'
97
98      U+0062 'b'
98
99      U+0063 'c'
99
100     U+0064 'd'
100
101     U+0065 'e'
101
102     U+0066 'f'
102
103     U+0067 'g'
103
104     U+0068 'h'
104
105     U+0069 'i'
105
106     U+006A 'j'
106
107     U+006B 'k'
107
108     U+006C 'l'
108
109     U+006D 'm'
109
110     U+006E 'n'
110
111     U+006F 'o'
111
112     U+0070 'p'
112
113     U+0071 'q'
113
114     U+0072 'r'
114
115     U+0073 's'
115
116     U+0074 't'
116
117     U+0075 'u'
117
118     U+0076 'v'
118
119     U+0077 'w'
119
120     U+0078 'x'
120
121     U+0079 'y'
121
122     U+007A 'z'
122
cacao_catcacao_cat
func main () {
	for i := 33; i <= 122; i++ {
		fmt.Printf("%v\t%#x\t%#U\n", i, i, i)
		fmt.Println(i)
	}

33      0x21    U+0021 '!'
33
34      0x22    U+0022 '"'
34
35      0x23    U+0023 '#'
35
36      0x24    U+0024 '$'
36
37      0x25    U+0025 '%'
37
38      0x26    U+0026 '&'
38
39      0x27    U+0027 '''
39
40      0x28    U+0028 '('
40
41      0x29    U+0029 ')'
41
42      0x2a    U+002A '*'
42
43      0x2b    U+002B '+'
43
44      0x2c    U+002C ','
44
45      0x2d    U+002D '-'
45
46      0x2e    U+002E '.'
46
47      0x2f    U+002F '/'
47
48      0x30    U+0030 '0'
48
49      0x31    U+0031 '1'
49
50      0x32    U+0032 '2'
50
51      0x33    U+0033 '3'
51
52      0x34    U+0034 '4'
52
53      0x35    U+0035 '5'
53
54      0x36    U+0036 '6'
54
55      0x37    U+0037 '7'
55
56      0x38    U+0038 '8'
56
57      0x39    U+0039 '9'
57
58      0x3a    U+003A ':'
58
59      0x3b    U+003B ';'
59
60      0x3c    U+003C '<'
60
61      0x3d    U+003D '='
61
62      0x3e    U+003E '>'
62
63      0x3f    U+003F '?'
63
64      0x40    U+0040 '@'
64
65      0x41    U+0041 'A'
65
66      0x42    U+0042 'B'
66
67      0x43    U+0043 'C'
67
68      0x44    U+0044 'D'
68
69      0x45    U+0045 'E'
69
70      0x46    U+0046 'F'
70
71      0x47    U+0047 'G'
71
72      0x48    U+0048 'H'
72
73      0x49    U+0049 'I'
73
74      0x4a    U+004A 'J'
74
75      0x4b    U+004B 'K'
75
76      0x4c    U+004C 'L'
76
77      0x4d    U+004D 'M'
77
78      0x4e    U+004E 'N'
78
79      0x4f    U+004F 'O'
79
80      0x50    U+0050 'P'
80
81      0x51    U+0051 'Q'
81
82      0x52    U+0052 'R'
82
83      0x53    U+0053 'S'
83
84      0x54    U+0054 'T'
84
85      0x55    U+0055 'U'
85
86      0x56    U+0056 'V'
86
87      0x57    U+0057 'W'
87
88      0x58    U+0058 'X'
88
89      0x59    U+0059 'Y'
89
90      0x5a    U+005A 'Z'
90
91      0x5b    U+005B '['
91
92      0x5c    U+005C '\'
92
93      0x5d    U+005D ']'
93
94      0x5e    U+005E '^'
94
95      0x5f    U+005F '_'
95
96      0x60    U+0060 '`'
96
97      0x61    U+0061 'a'
97
98      0x62    U+0062 'b'
98
99      0x63    U+0063 'c'
99
100     0x64    U+0064 'd'
100
101     0x65    U+0065 'e'
101
102     0x66    U+0066 'f'
102
103     0x67    U+0067 'g'
103
104     0x68    U+0068 'h'
104
105     0x69    U+0069 'i'
105
106     0x6a    U+006A 'j'
106
107     0x6b    U+006B 'k'
107
108     0x6c    U+006C 'l'
108
109     0x6d    U+006D 'm'
109
110     0x6e    U+006E 'n'
110
111     0x6f    U+006F 'o'
111
112     0x70    U+0070 'p'
112
113     0x71    U+0071 'q'
113
114     0x72    U+0072 'r'
114
115     0x73    U+0073 's'
115
116     0x74    U+0074 't'
116
117     0x75    U+0075 'u'
117
118     0x76    U+0076 'v'
118
119     0x77    U+0077 'w'
119
120     0x78    U+0078 'x'
120
121     0x79    U+0079 'y'
121
122     0x7a    U+007A 'z'
122
cacao_catcacao_cat
package main

import (
	"fmt"
)

func main () {
	if true {
		fmt.Println("One")
	}

	if false {
		fmt.Println("Two")
	}

	if !true {
		fmt.Println("Two")
	}

	if !false {
		fmt.Println("One")
	}

	if 2 == 2 {
		fmt.Println("Equal")
	}

	if 2 != 2 {
		fmt.Println("Not Equal")
	}

	if !(2 == 2) {
		fmt.Println("Equal")
	}

	if !(2 != 2) {
		fmt.Println("Not Equal")
	}
}

One
One
Equal
Not Equal
cacao_catcacao_cat

同じ行に2つの文を入れたいときはセミコロンを使えばいい.

スコープであり、初期化ステートメントとifステートメントを持つこと。

func main () {
	if x := 42; x == 42 {
		fmt.Println("001")
	}
	fmt.Println("Heres a statement")
	fmt.Println("Something Else")
}

001
Heres a statement
Something Else
func main () {
	x == 42 
	if x := 42 {
		fmt.Println("001")
	}
	fmt.Println(x)
}

./main.go:9:7: syntax error: cannot use x := 42 as value
cacao_catcacao_cat
package main

import (
	"fmt"
)

func main () {
	x := 42
	if x == 40 {
		fmt.Println("Our Value was 40")
	} else if x == 41 {
		fmt.Println("Our Value was 41")
	} else {
		fmt.Println("Our Value was not 40")
	}
}

Our Value was not 40
cacao_catcacao_cat
package main

import (
	"fmt"
)

func main () {
	switch {
	case false:
		fmt.Println("This Should Not Print")
	case (2 == 4):
		fmt.Println("This Should Not Print 2")
	case (3 == 3):
		fmt.Println("Prints")
	case (4 == 4):
		fmt.Println("Also Prints")
	}
}

Prints
cacao_catcacao_cat

case 4も実行される。

func main () {
	switch {
	case false:
		fmt.Println("This Should Not Print")
	case (2 == 4):
		fmt.Println("This Should Not Print 2")
	case (3 == 3):
		fmt.Println("Prints")
		fallthrough
	case (4 == 4):
		fmt.Println("Also Prints")
	}
}

Prints
Also Prints
cacao_catcacao_cat

fallthrough
処理を次のStatementに進める。

package main

import (
	"fmt"
)

func main () {
	switch {
	case false:
		fmt.Println("This Should Not Print")
	case (2 == 4):
		fmt.Println("This Should Not Print 2")
	case (3 == 3):
		fmt.Println("Prints")
		fallthrough
	case (4 == 4):
		fmt.Println("Also Prints")
	}
}

Prints
Also Prints
cacao_catcacao_cat
func main () {
	switch {
	case false:
		fmt.Println("This Should Not Print")
	case (2 == 4):
		fmt.Println("This Should Not Print 2")
	case (3 == 3):
		fmt.Println("Prints")
		fallthrough
	case (4 == 4):
		fmt.Println("Also Prints")
		fallthrough
	case (7 == 9):
		fmt.Println("Not True 1")
		fallthrough
	case (11 == 14):
		fmt.Println("Not True 2")
		fallthrough
	case (15 == 15):
		fmt.Println("True 15")
		fallthrough
	default:
		fmt.Println("this is default.")
			
	}

Prints
Also Prints
Not True 1
Not True 2
True 15
this is default.
cacao_catcacao_cat
func main () {
	switch "Bond" {
	case "Moneypenny":
		fmt.Println("Miss Money")
	case "Bond":
		fmt.Println("Bond James")
	case "Q":
		fmt.Println("This is Q")
	default:
		fmt.Println("This is Default")
	}

Bond James
cacao_catcacao_cat

変数に置き換えて実行

func main () {
	n := "Bond"
	switch n {
	case "Moneypenny":
		fmt.Println("Miss Money")
	case "Bond":
		fmt.Println("Bond James")
	case "Q":
		fmt.Println("This is Q")
	default:
		fmt.Println("This is Default")
	}
}

Bond James
cacao_catcacao_cat

複数のCase

func main () {
	n := "Bond"
	switch n {
	case "Moneypenny", "Bond", "Do No":
		fmt.Println("Miss Money or Bond or dr no")
	case "M":
		fmt.Println("Bond James")
	case "Q":
		fmt.Println("This is Q")
	default:
		fmt.Println("This is Default")
	}
}

Miss Money or Bond or dr no
cacao_catcacao_cat
package main

import (
	"fmt"
)

	func main () {
		fmt.Printf("true && true\t %v\n", true && true)
		fmt.Printf("true && false\t %v\n", true && false)		
		fmt.Printf("true || true\t %v\n", true || true)
		fmt.Printf("true || false\t %v\n", true || false)
		fmt.Printf("!true\t %v\n", !true)
		fmt.Printf("!false\t %v\n", !false)
	}

true && true     true
true && false    false
true || true     true
true || false    true
!true    false
!false   true
cacao_catcacao_cat

1~10000までの数字を出力する

	func main () {
		for i := 0; i < 10001; i++ {
			fmt.Println(i)
		}
	}

or

	func main () {
		for i := 0; i <= 10000; i++ {
			fmt.Println(i)
		}
cacao_catcacao_cat

Print Every Rune Code
Alphabet starts from 65 to 90

https://www.k-cube.co.jp/wakaba/server/ascii_code.html

package main

import (
	"fmt"
)

	func main () {
		for i := 65; i <= 90; i++ {
			fmt.Println(i)
			for j := 0; j < 3; j++ {
			fmt.Printf("\t%#U\n", i)
			}
	}
}

65
        U+0041 'A'
        U+0041 'A'
        U+0041 'A'
66
        U+0042 'B'
        U+0042 'B'
        U+0042 'B'
67
        U+0043 'C'
        U+0043 'C'
        U+0043 'C'
68
        U+0044 'D'
        U+0044 'D'
        U+0044 'D'
69
        U+0045 'E'
        U+0045 'E'
        U+0045 'E'
70
        U+0046 'F'
        U+0046 'F'
        U+0046 'F'
71
        U+0047 'G'
        U+0047 'G'
        U+0047 'G'
72
        U+0048 'H'
        U+0048 'H'
        U+0048 'H'
73
        U+0049 'I'
        U+0049 'I'
        U+0049 'I'
74
        U+004A 'J'
        U+004A 'J'
        U+004A 'J'
75
        U+004B 'K'
        U+004B 'K'
        U+004B 'K'
76
        U+004C 'L'
        U+004C 'L'
        U+004C 'L'
77
        U+004D 'M'
        U+004D 'M'
        U+004D 'M'
78
        U+004E 'N'
        U+004E 'N'
        U+004E 'N'
79
        U+004F 'O'
        U+004F 'O'
        U+004F 'O'
80
        U+0050 'P'
        U+0050 'P'
        U+0050 'P'
81
        U+0051 'Q'
        U+0051 'Q'
        U+0051 'Q'
82
        U+0052 'R'
        U+0052 'R'
        U+0052 'R'
83
        U+0053 'S'
        U+0053 'S'
        U+0053 'S'
84
        U+0054 'T'
        U+0054 'T'
        U+0054 'T'
85
        U+0055 'U'
        U+0055 'U'
        U+0055 'U'
86
        U+0056 'V'
        U+0056 'V'
        U+0056 'V'
87
        U+0057 'W'
        U+0057 'W'
        U+0057 'W'
88
        U+0058 'X'
        U+0058 'X'
        U+0058 'X'
89
        U+0059 'Y'
        U+0059 'Y'
        U+0059 'Y'
90
        U+005A 'Z'
        U+005A 'Z'
        U+005A 'Z'
cacao_catcacao_cat
	func main () {
		bd := 1985
		for {
			if bd > 2017 {
				break
		}
			fmt.Println(bd)
			bd ++
		}
}

	func main () {
		bd := 1985
		for bd <= 1995 {
			fmt.Println(bd)
			bd ++
		}
}
cacao_catcacao_cat

10 ~ 100 divided by 4

%v(,i)で、順繰りに表示して、%v(i%4)で割った余りを表示

	func main () {
		for i := 10; i <= 100; i++ {
			fmt.Printf("When %v is divided by 4, the remainder is %v\n", i, i%4)
		}
}


When 90 is divided by 4, the remainder is 2
When 91 is divided by 4, the remainder is 3
When 92 is divided by 4, the remainder is 0
When 93 is divided by 4, the remainder is 1
When 94 is divided by 4, the remainder is 2
When 95 is divided by 4, the remainder is 3
When 96 is divided by 4, the remainder is 0
When 97 is divided by 4, the remainder is 1
When 98 is divided by 4, the remainder is 2
When 99 is divided by 4, the remainder is 3
When 100 is divided by 4, the remainder is 0
cacao_catcacao_cat

if statementを使うだけ

	func main () {
		x := 0
		if x == 0 {
			fmt.Println("Im zero")
		}
		}
cacao_catcacao_cat

else if

	func main () {
		x := 0
		if x == 0 {
			fmt.Println("Im zero")
		} else if x == 1 {
			fmt.Println("Im one")
		} else {
			fmt.Println("What`s this?")
		}
		}
cacao_catcacao_cat

Switch with No switch expression

	func main () {
		switch {
		case false :
			fmt.Println("this is false")
		
		case true :
			fmt.Println("this is true")
		
		}
		}

ちなみにtrue判定される。

this is true
cacao_catcacao_cat

STRINGで判定

	func main () {
		favSport := "surfing"
		switch favSport{
		case "skiing" :
			fmt.Println("this is false")
		
		case "snowboading" :
			fmt.Println("this is true")
		
		case "surfing" :
			fmt.Println("this is surfing")
		}
		}
このスクラップは2022/09/10にクローズされました