首页 > 其他分享 >go中if、for

go中if、for

时间:2024-11-13 21:07:41浏览次数:1  
标签:case fmt else Println score go main

流程控制

面向过程编程

  • 自上而下的执行()

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

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

现实世界的逻辑

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

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

  • 定义 变量、常量
  • 需要在程序中进行一些判断,来做出一些不同的决定 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)
   }

}

标签:case,fmt,else,Println,score,go,main
From: https://www.cnblogs.com/xuruizhao/p/18544827

相关文章

  • GO面试-切片
    一、结构介绍切片(Slice)在Go语言中,有一个很常用的数据结构,切片是一个拥有相同类型元素的可变长度的序列,它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。并发不安全。切片是一种引用类型,它有三个属性:指针,长度和容量。底层源码定义:typeslicestruct{arrayunsa......
  • 解析 Go 切片:为何按值传递时会发生改变?|得物技术
    一、前言在Go语言中,切片是一个非常常用的数据结构,很多开发者在编写代码时都会频繁使用它。尽管切片很方便,但有一个问题常常让人感到困惑:当我们把切片作为参数传递给函数时,为什么有时候切片的内容会发生变化?这让很多人一头雾水,甚至在调试时浪费了不少时间。这篇文章简单明了地......
  • luogo P1182 数据分段
    数列分段SectionII题目描述对于给定的一个长度为N的正整数数列A1~N,现要将其分成M(M<=N)段,并要求每段连续,且每段和的最大值最小。关于最大值最小:例如一数列42451要分成3段。将其如下分段:[42][45][1]第一段和为6,第2段和为9,第3段和为1,和最大值为9。......
  • 嵌入式开发套件(golang版本)
    1.watchdog(软件看门狗:守护+升级)2.gate(主程序)3.web(api版本+升级包) OTA升级流程watchdog启动后检查守护进程gate是否正在运行,如果没有,api对比版本号,下载解压tar文件包,启动守护进程gate,循环判断 测试前 测试后 结束gate进程,watchdog重新拉起 ......
  • 根据后缀名把Excel文件转换成可以插入MongoDB数据库的数据
    importpandasaspdimportosdefconvert_file_to_json(file_path):#检查文件扩展名并读取文件_,file_extension=os.path.splitext(file_path)iffile_extension.lower()=='.csv':df=pd.read_csv(file_path)eliffile_extension.lower......
  • MIGO DUMP LCX_RAP_EVENT_RUNTIME CL_RAP_EVENT_MANAGER==========CP
    MIGO收货时发生DUMP运行事务代码:SBGRFCCONF创建入站目标输入目标BGPF 保存即可 TRANSLATEwithxEnglishArabicHebrewPolishBulgarianHindiPortugueseCatalanHmongDawRomanianChineseSimplifiedHungarianRussianChineseTraditi......
  • 2024-11-13:求出所有子序列的能量和。用go语言,给定一个整数数组nums和一个正整数k, 定义
    2024-11-13:求出所有子序列的能量和。用go语言,给定一个整数数组nums和一个正整数k,定义一个子序列的能量为子序列中任意两个元素之间的差值绝对值的最小值。找出nums中长度为k的所有子序列的能量和,对结果取模10^9+7后返回。输入:nums=[1,2,3,4],k=3。输出:4。解释:nums......
  • 【JetBrains GoLand 2024软件下载与安装教程】
     1、安装包GoLand2024:链接:https://pan.quark.cn/s/578b3b1d9379提取码:pn3LGoLand2021:链接:https://pan.quark.cn/s/c4c9a3112b2c提取码:i9NfGoLand2018:链接:https://pan.quark.cn/s/5b9cc3b12cab提取码:adEW2、安装教程(建议关闭杀毒软件)1)       下载并......
  • 免费送源码:Java+python+django+MySQL 小区疫情订菜系统 计算机毕业设计原创定制
    摘 要随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于小区疫情订菜系统当然也不能排除在外,随着网络技术的不断成熟,带动了小区疫情订菜系统,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这种......
  • 【菜笔cf刷题日常-1600】C. Good Subarrays(思维,前缀和)
    链接:Problem-1398C-Codeforces思路:考虑每一个新加入的数对于原有序列(长度、数的总和)需求的变化:如1的加入对于原有序列需求无变化;2 的加入需要原有序列长度增加1;0 的加入需要原有序列数的总和增加1;……因此,将每个数减1(如1变为0,0变为 -1)来代表这个数的......