go中if、for

流程控制

面向过程编程

  • 自上而下的执行()

面向对象编程:让程序像人一样的思考来运行,而不是机械式的自上而下 (架构)

  • 将世界抽象为一个个的对象,然后用程序来模拟这一个个的对象,然后进行一些人工化的操作实现

现实世界的逻辑

  • 定义 (属性)
  • 判断 (对错,导向不同的结果)
  • 循环 (很多事情本质上都是在循环的) 时间(秒、时、分、日、月、年、周)

程序代码底层的本质,也和上面相同,所有编程语言都有的

  • 定义 变量、常量
  • 需要在程序中进行一些判断,来做出一些不同的决定 if 如果....如果条件二else if.....否则else.....
    • 考分,90 + A 80 - 90 B 70-80 C 0-60 D ....
  • 循环,我们希望程序不停的做一件事情 for 循环
    • 服务器,我们希望程序是一直执行
    • 大量计算,1 + .... + 100000000

顺序结构:自上而下运行

选择结构:满足了某些条件才会执行

  • if (常用的)
  • switch (也要学会使用,某些情况下可以优化代码结构)

循环结构:条件满足的情况,我们会去循环0 - N次。

  • for

1、if

if  a>10 {
    fmt.Println("大于10")
} else {
    fmt.Println("不大于10")
}
// if -- else
package main

import "fmt"

func main() {
	var score int = 90
	if score >= 60 {
		fmt.Println("及格")
	} else {
		fmt.Println("不及格")
	}
}


package main

import "fmt"

func main() {
	// 判断用户密码输入是否正确
	// 接收用户输入
	// 第一次判断
	// 第二次输出
	// 第二次判断
	var num1 string
	var num2 string
	fmt.Println("请输入密码:")
	// Scan()  指针对象
	fmt.Scan(&num1)
	if num1 == "123" {
		fmt.Printf("第一次密码正确")
		fmt.Println("请再次输入密码:")
		fmt.Scan(&num2)
		if num2 == "123" {
			fmt.Printf("第二次密码正确,登录成功")
		} else {
			fmt.Println("第二从密码错误")
		}
	} else {
		fmt.Println("第一次密码错误")
	}
}

// if -- else if -- else
package main

import "fmt"

func main() {
	var score int = 60
	if score >= 60 {
		if score >= 90 && score <= 100 {
			fmt.Println("A")
		} else if score >= 80 && score < 90 {
			fmt.Println("B")
		} else if score >= 70 && score < 80 {
			fmt.Println("C")
		} else {
			fmt.Println("D")
		}
	} else {
		fmt.Println("不及格")
	}
}

2、switch

package main

import "fmt"

func main() {

   var score int = 100

   // 通过switch来判断score
   // case , 后面可以写多个条件
   switch score {
   case 100, 95, 91:
      fmt.Println("A")
   case 90:
      fmt.Println("B")
   case 80, 70, 60:
      fmt.Println("C")
   default:
      fmt.Println("other")
   }

   // switch 是可以省略条件的,默认是 switch true
   switch{
   case false:
      fmt.Println("false")
   case true:
      fmt.Println("true")
   default:
      fmt.Println("其他")
   }

   //var flag bool
   //switch flag {
   //case score<100 :
   //
   //}
}

switch 穿透

package main

import "fmt"

func main() {
	a := false
	switch a {
    // 在case中 一旦使用了 fallthrough,则会强制执行下一个case语句
	case false:
		fmt.Println("1")
		fallthrough
	case true:
		fmt.Println("2")
		fallthrough
	case true:
		fmt.Println("3")
		fallthrough
	case false:
		fmt.Println("4")
		fallthrough
	case false:

	}
}

分支结构小结

  • if

  • if ... else if

  • if .... else

  • if ... else if ... else if ... else if... else

  • swtich - case

  • swtich - case - fallthrough

  • swtich - case - default

3、for

package main

import "fmt"

func main() {
    //for 参数1:从哪里开始  参数2:到哪里结束 参数3:控制这个循环条件变量(自增和自减)
	for i := 0; i < 10; i++ {
		fmt.Println(i)
	}
}
package main

import "fmt"
// 求1-10的和
func main() {
	var sum int = 0
	for i := 0; i <= 10; i++ {
		sum += i
	}
	fmt.Println(sum)
}

(1)、探究for循环

package main

import "fmt"

// 探究for循环   init:起始值  end:结束值  condition:条件变量
func main() {
   i := 0
   // for 循环可以直接
   // 在for循环中定义的变量,作用域就只在 for循环内,外面是无法调用的
   // for + 结束for条件就可以跑起来
   for i <= 5 {
      i++
   }
   fmt.Println(i)
}
package main

import (
	"fmt"
)

// 探究for循环   init:起始值  end:结束值  condition:条件变量
func main() {
	// 没有起始值、没有结束...  无限循环,死循环, 不要在开发中写这种代码。会内存溢出
	for {
		fmt.Println("hello,world")
	}
}

(4)、终止循环

break : 结束整个循环,立即停止

continue :结束当前这次循环,继续进行下一次循环

package main

import "fmt"

func main() {

   for i := 1; i <= 10; i++ {
      if i == 5 {
         //break
         continue // 到这里就结束了当次循环,不会向下了,继续从头开始
      }
      fmt.Println(i)
   }

}
posted @ 2024-11-13 21:18  Linux小菜鸟  阅读(4)  评论(0编辑  收藏  举报