赞
踩
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等
%:a % b = a - a / b * b
package main import "fmt" //演示Golang中关系运算符的使用 func main() { var n1 int = 9 var n2 int = 8 fmt.Println(n1 == n2) fmt.Println(n1 != n2) fmt.Println(n1 > n2) fmt.Println(n1 >= n2) fmt.Println(n1 < n2) fmt.Println(n1 <= n2) flag := n1 > n2 fmt.Println("flag=", flag) }
package main import "fmt" //演示Golang中逻辑运算符的使用 func main() { var age int = 40 //逻辑 && if age > 30 && age < 50 { fmt.Println("ok1") } if age >30 && age<40 { fmt.Println("ok2") } //逻辑 || if age > 30 || age < 50 { fmt.Println("ok3") } if age >30 || age<40 { fmt.Println("ok4") } //逻辑 ! if age > 30 { fmt.Println("ok3") } if !(age >30) { fmt.Println("ok4") } }
案例结果:
package main import "fmt" //演示Golang中赋值运算符的使用 func main() { //var i int //i = 10//基本赋值 //有两个变量,a和b,要求将其进行交换,最终打印结果 a := 9 b := 2 fmt.Printf("交换前的情况是 a = %v , b = %v\n", a, b) //定义一个临时变量 t := a a = b b = t fmt.Printf("交换后的情况是 a = %v , b = %v\n", a, b) a += 17 fmt.Println("a =", a) }
package main
import (
"fmt"
)
func main() {
var a int = 10
var b int = 20
a = a + b
b = a - b //b = a + b - b
a = a - b //a = a + b - a
fmt.Printf("a = %v b = %v", a, b)
}
Go语言中没有三元运算
var n int
var i int = 10
var j int = 12
//传统的三元运算
//n = i > j ? i : j
if i > j{
n = i
} else{
n = j
}
fmt.Println("n=", n)//12
//使用if else 实现基本的三元运算
package main import ( "fmt" ) func main() { var name string var age byte var sal float32 var isPass bool fmt.Println("请输入名字 ") fmt.Scanln(&name) fmt.Println("请输入年龄 ") fmt.Scanln(&age) fmt.Println("请输入薪水") fmt.Scanln(&sal) fmt.Println("请输入是否通过考试") fmt.Scanln(&isPass) fmt.Printf("名字是 %v\n 年龄是 %v\n 薪税是 %v\n 是否通过考试 %v\n", name, age, sal, isPass) }
package main import ( "fmt" ) func main() { var name string var age byte var sal float32 var isPass bool fmt.Println("请输入你的名字, 年龄, 薪水,是否通过考试, 使用空格隔开") fmt.Scanf("%s %d %f %t", &name, &age, &sal, &isPass) fmt.Printf("名字是 %v \n 年龄是 %v \n 薪水是 %v \n 是否通过考试 %v \n", name, age, sal, isPass) }
按位或|
两位有一个为1,结果为1,否则为0
按位异或^
两位一个为0,一个为1,结果为1,否则为0
fmt.Println("2&3 =", 2&3)
fmt.Println("2|3 =", 2|3)
fmt.Println("2^3 =", 2^3)
-2^2
在程序中,程序运行的流程控制决定程序是如何执行的,是必须掌握的,主要有三大流程控制语句。
Golang中定义变量时采用合法的前向引用。如:
func main(){
var num1 int = 10 //声明了num1
var num2 int = num1 + 20 //使用num1
fmt.Println(num2)
}
//错误形式
func main(){
var num2 int = num1 + 20
var num1 int = 10 //应当先声明再使用
fmt.Println(num2)
}
让程序有选择的执行,分支控制有三种:
package main
import "fmt"
func main() {
//输入年龄,如果大于18输出“你年龄大于18,要对自己负责哦”
var age int //定义年龄
fmt.Println("请输入年龄:")
fmt.Scanln(&age)//通过控制台输入年龄
if age > 18 {
fmt.Println("你年龄大于18,要对自己负责哦")
}
}
单分支语句流程图
说明:golang支持在if中,直接定义一个变量
if age := 20; age > 18{
fmt.Println("你年龄大于18,要对自己负责哦")
}
package main import "fmt" func main() { //输入年龄,如果大于18输出“你年龄大于18,要对自己负责哦”,如果年龄小于18则输出“年龄小于18” var age int //定义年龄 fmt.Println("请输入年龄:") fmt.Scanln(&age)//输入年龄 if age > 18 { fmt.Println("你年龄大于18,要对自己负责哦") }else { fmt.Println("年龄小于18") } }
package main import "fmt" func main() { //参加百米运动会,如果用时8秒以内进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组。输入成绩和性别。 //定义变量接收秒数 float64 //定义变量接收性别 string var second float64 fmt.Println("请输入秒数") fmt.Scanln(&second) if second <= 8 { var sex string fmt.Println("请输入性别") fmt.Scanln(&sex) if sex == "男" { fmt.Println("进入男子组决赛") } else { fmt.Println("进入女子组决赛") } } else { fmt.Println("out...") } }
package main import "fmt" func main() { //定义变量输入月份,定义年龄 var month byte var age byte var price float64 = 60.0 fmt.Println("请输入游玩月份") fmt.Scanln(&month) fmt.Println("请输入游客年龄") fmt.Scanln(&age) if month >= 4 && month <= 10 { if age > 60 { fmt.Printf("%v 月 票价 %v 年龄 %v", month, price/3, age) } else if age >= 18 { fmt.Printf("%v 月 票价 %v 年龄 %v", month, price, age) } else { fmt.Printf("%v 月 票价 %v 年龄 %v", month, price/2, age) } } else { if age >= 18 && age < 60 { fmt.Println("淡季,成人票价40") } else { fmt.Println("淡季,老人和儿童票价20") } } }
package main import "fmt" func main() { //定义变量输入月份,定义年龄 var key byte fmt.Println("请输入一个字符 a,b,c,d,e,f,g") fmt.Scanf("%c", &key) switch key { case 'a': fmt.Println("周一") case 'b': fmt.Println("周二") case 'c': fmt.Println("周三") case 'd': fmt.Println("周四") case 'e': fmt.Println("周五") case 'f': fmt.Println("周六") case 'g': fmt.Println("周日") default: fmt.Println("输入有误...") } }
go语言没有while和do…while语法,可以通过for循环来实现其使用效果
func main(){
var i int = 1
for{
if i > 10
break
}
fmt.Println("hello", i)
i++
}
fmt.Println("i=", i)
package main import "fmt" func main() { //1)统计3个班成绩情况,每个班有5名同学,求出各个班的平均分和所有班级的平均分[学生的成 //绩从键盘输入] var classNum int = 3 var stuNum int = 5 var allScore float64 = 0.0 for j := 1; j <= classNum; j++ { sum := 0.0 for i := 1; i <= stuNum; i++ { var score float64 fmt.Printf("请输入第 %d 班 第 %d 个学生的成绩 \n", j, i) fmt.Scanln(&score) sum += score } fmt.Printf("第 %d 个班级的平均分是 %v\n", j, sum/float64(stuNum)) allScore += sum } fmt.Printf("各个班级的总成绩为 %v 所有班级的平均分是 %v", allScore, allScore/float64(stuNum*3)) }
package main import "fmt" func main() { //1)统计3个班成绩情况,每个班有5名同学,求出各个班的平均分和所有班级的平均分[学生的成 //绩从键盘输入] //2)统计三个班的及格人数,每个班有五人 var classNum int = 3 //定义班级数量 var stuNum int = 5 //定义每班人数 var allScore float64 = 0.0 //定义总成绩 var passScore float64 = 60.0 //定义及格分数 var passCount int = 0 //定义及格人数 for j := 1; j <= classNum; j++ { sum := 0.0 for i := 1; i <= stuNum; i++ { var score float64 fmt.Printf("请输入第 %d 班 第 %d 个学生的成绩 \n", j, i) fmt.Scanln(&score) if score >= passScore { //判断及格人数 passCount++ //及格人数累加 } //累计总分 sum += score } fmt.Printf("第 %d 个班级的平均分是 %v\n", j, sum/float64(stuNum)) allScore += sum } fmt.Printf("各个班级的总成绩为 %v 所有班级的平均分是 %v 三个班总体及格人数是 %v", allScore, allScore/float64(stuNum*3), passCount) }
var totalLevel int = 20 //i表示层数 for i := 1; i <= totalLevel; i++ { //在打印*前需要先打印空格,空格=总层数-当前层数 for j := 1; j <= totalLevel-i; j++ { fmt.Print(" ") } //k表示每层需要打印多少个* for k := 1; k <= 2*i-1; k++ { if k == 1 || k == 2*i-1 || i == totalLevel { fmt.Print("*") } else { fmt.Print(" ") } } fmt.Println() }
var totalLevel int = 9
for i := 1; i <= totalLevel; i++ {
for j := 1; j <= i; j++ {
fmt.Printf("%v * %v = %v \t", j, i, j*i)
}
fmt.Println()
}
package main import ( "fmt" "math/rand" "time" ) func main() { var count int = 0 for { rand.NewSource(time.Now().Unix()) n := rand.Intn(100) + 1 fmt.Println("n=", n) count++ if n == 99 { break //跳出for循环 } } fmt.Println("生成99一共使用了", count) }
在代码实现过程中,遇到了引包失败的情况,原因是:最新的go1.20与idea的版本匹配问题,最好使用2022版idea。
package main import "fmt" func main() { label2: for i := 0; i < 4; i++ { //label1: for j := 0; j < 10; j++ { if j == 2 { break label2 } fmt.Println("j = ", j)//输出0,1 } } }
说明:
package main
import "fmt"
func main() {
for i := 1; i <= 100; i++ {
if i%2 == 0 {
continue
}
fmt.Println("奇数是", i)
}
}
package main import "fmt" func main() { //从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序 var positiveCount int //正数个数 var negativeCount int //负数个数 var num int for { fmt.Println("请输入一个整数") fmt.Scanln(&num) if num == 0 { break//输入0时结束程序 } if num > 0 { positiveCount++//正数个数总和 continue } negativeCount++//负数个数总和 } fmt.Printf("正数的个数是%v 负数的个数是%v\n", positiveCount, negativeCount) }
某人有100,000元,每经过一次路口,需要交费,规则如下:
当现金>50000时,每次交5%
当现金<=50000时,每次交1000
编程计算该人可以经过多少次路口,使用for break方式完成
package main import "fmt" func main() { //某人有100,000元,每经过一次路口,需要交费,规则如下: //当现金>50000时,每次交5% //当现金<=50000时,每次交1000 //编程计算该人可以经过多少次路口,使用for break方式完成 var money float64 = 100000 var sum int for { if money > 50000 { money -= money * 0.05 } else if money <= 50000 && money >= 1000 { money -= 1000 } else { break } sum++ } fmt.Printf("该人可以经过%d次路口,还剩%v元", sum, money) }
输出结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。