Go语言第二课 循环结构

常见的循环结构

package main

import (
	"fmt"
	"os"
	"strconv"
)

func main() {
	//常规结构
	for i := 0; i < 10; i++ {
		fmt.Print(i)
		fmt.Print(" ")
	}
	fmt.Print("\n")
	//仅判断条件
	i := 0
	for i < 10 {
		fmt.Print(i)
		fmt.Print(" ")
		i++
	}
	fmt.Print("\n")
	//极简结构
	i = 0
	for {
		if i >= 10 {
			break
		}
		fmt.Print(i)
		fmt.Print(" ")
		i++
	}
	fmt.Print("\n")
	//对集合类型的操作
	//range关键字是对集合进行遍历
	for index, value := range os.Args {
		fmt.Println(strconv.Itoa(index) + "-->" + value)
	}
}

输出

0 1 2 3 4 5 6 7 8 9 
0 1 2 3 4 5 6 7 8 9 
0 1 2 3 4 5 6 7 8 9 
0-->/tmp/___go_build_main_go
1-->-a
2-->fuck
3-->-b
4-->you

类似于C++ loop的坑爹语法下的循环结构

package main

import (
	"fmt"
	"strconv"
)

func main() {
	for a := 1; a < 5; a++ {
		for b := 0; b < 5; b++ {
			if b%2 == 1 {
				continue
			}
			fmt.Println(strconv.Itoa(a) + "-->" + strconv.Itoa(b))
		}
	}
	fmt.Println("========================================")
flg:
	for a := 1; a < 5; a++ {
		for b := 0; b < 5; b++ {
			if b%2 == 1 {
				continue flg
			}
			fmt.Println(strconv.Itoa(a) + "-->" + strconv.Itoa(b))
		}
	}
}

1-->0
1-->2
1-->4
2-->0
2-->2
2-->4
3-->0
3-->2
3-->4
4-->0
4-->2
4-->4
========================================
1-->0
2-->0
3-->0
4-->0

range的一个非典型错误

package main

import "fmt"

type ttest struct {
	name string
}

func main() {
	a := []*ttest{&ttest{"aaa"}, &ttest{"bbb"}}

	b := []ttest{ttest{"ccc"}, ttest{"ddd"}, ttest{"eee"}}

	for k, v := range b {
		fmt.Printf("v-->%p\n", &v)
		if k == 0 {
			a = append(a, &v)
		}
	}

	for _, v := range a {
		fmt.Print(v.name + ",")
	}
}

由于变量v的地址一直不变,而值随着遍历一直在变所以拼接到a最后面的哪个值一直在变,运行结果如下:

v-->0xc000010200
v-->0xc000010200
v-->0xc000010200
aaa,bbb,eee,
Process finished with exit code 0

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值