Closed28
[Go] Control Flow

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

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

package main
import (
"fmt"
)
func main () {
x := 43 / 40
fmt.Println(x)
}
1
商が出る

func main () {
x := 43 % 40
fmt.Println(x)
}
3
余りが出る

func main () {
x := 0
for {
if x > 100 {
break
}
if x%2 != 0{
continue
}
fmt.Println(x)
x++
}
fmt.Println("Done.")
}
0
出力が終わらない。
インクリメントが始まらないから、0のまま。
Continueが始まり、ループの先頭に戻るから。インクリメントをもっと前に持ってこないといけない。

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

#をつけると、コードポイントと記号が表示される
全てのコードポイントと、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

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

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

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

同じ行に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

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

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

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

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

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.

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

変数に置き換えて実行
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

複数の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

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

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

Print Every Rune Code
Alphabet starts from 65
to 90
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'

func main () {
bd := 1985
for {
if bd > 2017 {
break
}
fmt.Println(bd)
bd ++
}
}
func main () {
bd := 1985
for bd <= 1995 {
fmt.Println(bd)
bd ++
}
}

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

if statementを使うだけ
func main () {
x := 0
if x == 0 {
fmt.Println("Im zero")
}
}

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?")
}
}

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

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にクローズされました