← Назад
for i := 1; i < 5; i++ {
fmt.Println(i)
}
for i := 0; i < 15; i += 3 {
fmt.Println(i)
}
for i := 100; i > 0; i -= 10 {
fmt.Println(i)
}
var i = 1
for ; i < 5; i++ {
fmt.Println(i)
}
i := 0
for fmt.Println("start"); i < 3; i++ {
fmt.Println(i)
}
// start
// 0
// 1
// 2
for i := 0; i < 3; fmt.Println("after") {
fmt.Println(i)
i++
}
// 0
// after
// 1
// after
// 2
// after
var i = 1
for i < 10 {
fmt.Println(i)
i++
}
var v int = 39
for v != 0 {
fmt.Println(v)
if v > 16 {
v /= 4
} else {
v /= 2
}
}
// 39
// 9
// 4
// 2
// 1
for {
}
for range "ticks" {
fmt.Println("tick") // Print 5 time "tick"
}
for i, c := range "ticks" {
fmt.Printf("%d: %q\n", i, c)
}
// 0: 't'
// 1: 'i'
// 2: 'c'
// 3: 'k'
// 4: 's'
var users = [3]string{"Tom", "Alice", "Kate"}
for index, value := range users {
fmt.Println(index, value)
}
for index := range users {
fmt.Println(index)
}
for _, value := range users{
fmt.Println(value)
}
a := [...]string{"one", "two", "three", "four", "five"}
for i := range a {
a[4] = "six"
fmt.Printf("%d: %s\n", i, a[i])
}
nums := &[...]string{"one", "two", "three"}
for idx, num := range *nums {
fmt.Printf("%d: %s\n", idx, num)
}
// 0: one
// 1: two
// 2: three
for idx, num := range nums {
fmt.Printf("%d: %s\n", idx, num)
}
// 0: one
// 1: two
// 2: three
m := map[string]int{"one": 1, "two": 2, "three": 3}
for range m {
fmt.Println("loop")
}
for key, value := range m {
fmt.Printf("key: %q, value: %d\n", key, value)
}
for key, _ := range m {
fmt.Printf("key: %q\n", key)
}
for key := range m {
fmt.Printf("key: %q\n", key)
}
for _ = range m {
fmt.Println("b")
}
for _, _ = range m {
fmt.Println("c")
}
// nil map
var m map[string]int
for range m { // цикл не будет выполнятся
fmt.Println("foo")
}
ch := make(chan int, 1)
i := 0
for ch <- 1; i < 5; i++ {
fmt.Println(i)
}
ch := make(chan int)
go func() {
time.Sleep(3 * time.Second)
ch <- 1
time.Sleep(2 * time.Second)
ch <- 2
time.Sleep(time.Second)
close(ch)
}()
fmt.Printf("before:\t\t%s\n", time.Now())
for v := range ch {
fmt.Printf("tick #%d:\t%s\n", v, time.Now())
}
fmt.Printf("after:\t\t%s\n", time.Now())
// before: 2009-11-10 23:00:00 +0000 UTC m=+0.000000001
// tick #1: 2009-11-10 23:00:03 +0000 UTC m=+3.000000001
// tick #2: 2009-11-10 23:00:05 +0000 UTC m=+5.000000001
// after: 2009-11-10 23:00:06 +0000 UTC m=+6.000000001
ch := make(chan int)
close(ch)
for range ch {
fmt.Println("tick")
}
fmt.Println("done!")
// It prints done! to stdout.
// nil channel
ch := make(chan int)
for range ch {
}
// или
var ch chan int
for range ch {
}
// fatal error: all goroutines are asleep - deadlock!
outside: // declare the label
for i := 0; i<2; i++ {
for j := 0; j<2; j++ {
if i < j {
break outside // break to that label
}
fmt.Println(i, j)
}
}
// prints 0 0
for i := 0; i<2; i++ {
for j := 0; j<2; j++ {
if i < j {
continue
}
fmt.Println(i, j)
}
}
// 0 0
// 1 0
// 1 1
← Назад