package main

import (
	"container/list"
	"fmt"
	"github.com/spf13/cast"
	"strings"
)

// For1 第一种:对切片进行遍历
func For1() {
	fmt.Println("对切片进行遍历")
	sub := "10.1.1.18"
	s := strings.Split(sub, ".") // 对IP地址进行切片处理
	for index, value := range s {
		sprintf := fmt.Sprintf("第[ %d ]个元素值: %s", index, value) // 格式化字符串
		fmt.Println(sprintf)                                    // 输出格式化后的字符串内容
	}
}

// For2 第二种: 设置范围进行i++
func For2() {
	fmt.Println("范围循环")
	sub := "10.1.1."
	for i := 1; i <= 3; i++ {
		ip := sub + cast.ToString(i)
		fmt.Println(ip)
	}
	// 另一种写法(其实只是把初始值从for语句中提取到前面,++放到里面而已)
	n := 1
	for n <= 3 {
		fmt.Println(n)
		n++
	}
}

// For3 第三种:对列表进行遍历
func For3() {
	var ls list.List // 定义一个列表变量
	ls.PushBack("刘德华")
	ls.PushBack("张学友")
	for i := ls.Front(); i != nil; i = i.Next() {
		fmt.Println(i.Value)	// 打印列表的值
	}
}
func main() {
	For1()
	For2()
	For3()
}

效果如下

对切片进行遍历
第[ 0 ]个元素值: 10
第[ 1 ]个元素值: 1 
第[ 2 ]个元素值: 1 
第[ 3 ]个元素值: 18
范围循环           
10.1.1.1           
10.1.1.2           
10.1.1.3           
1                  
2                  
3                  
刘德华             
张学友