GO语言第二天(运算符和流程控制)
第一节:字符与字符串的区别
package main
import "fmt"
func main(){
// var a byte = 'a' 字符
// var b string = "b" 字符串
// 换行表示 \n \\ 表示一个\ 以便用于文件操作
// var b string = "hello\nworld" \n 自动换行
var b string = "hello\077world" //%s 遇到\0停止
//fmt.Println("%s",b)
fmt.Println(b)
//fmt .Println(a==b)
}
func main(){
//var str string = "hello word "
//在go语言一个汉字算作3个字符串,为了和linux统一处理
var str string = "不信你试试看看吧it"
//计算字符串个数
num := len(str)
fmt.Println(num)
}
第二节:占位符使用
package main
import "fmt"
func mian (){
//var a int64 =10
a := 10 //int
fmt.Printf("%d\n",a)
//var b float =10
b := 10.0 //float64
fmt.Printf("%f\n",b)
var c bool = true
fmt.Printf("%t\n",c)
var d byte = "A"
fmt.Printf("%c\n",d)
var e string = "hello"
fmt.Printf("%s\n",e)
fmt.Printf("%p\n",&a)
//%T 打印变量对应的数据类型
fmt.Printf("%T\n",a)
fmt.Printf("%T\n",b)
fmt.Printf("%T\n",c)
fmt.Printf("%T\n",d)
fmt.Printf("%T\n",e)
//%% 会打印一个%
fmt.Printf("35%%")
}
func mian(){
//计算机能够识别的进制 二进制 八进制 十进制 十六进制
a:=123//十进制数据
b:=0123//八进制数据 以0开头的数据是八进制
c:=0xabc//十六进制 以0x开头的数据是十六进制
//go语言中不能直接表示二进制数据
//fmt.Println(a)
//fmt.Println(b)
//fmt.Println(c)
//%b 占位符 表示输出一个二进制数据
//fmt.Printf("二进制值为:%b\n",a)
//fmt.Printf("二进制值为:%b\n",b)
//fmt.Printf("二进制值为:%b\n",c)
//%o 占位符 表示输出一个八进制数据
//fmt.Printf("%o\n",a)
//fmt.Printf("%o\n",b)
//fmt.Printf("%o\n",c)
//%x %X 占位符 表示输出一个十六进制数据
fmt.Printf("%X\n",a)
fmt.Printf("%X\n",b)
fmt.Printf("%X\n",c)
}
第3节:常量定义和使用
package main
import "fmt"
func mian(){
//常量定义和使用
//在程序运行过程中不能发生改变的量, 称为常量
//常量的存储位置在数据区
//栈区 系统为每一个程序分配1M的空间用来存储变量, 在程序运行结束系统自动会释放
var s1 int = 10
var s2 int = 20
// 常量的存储位置在数据区 不能通过& 取地址来访问
const a int = 10
fmt.Println(&s1)
fmt.Println(&s2)
//a=20//常量的值不允许修改
fmt.Println(a)
}
func mian(){
//常量一般用大写字母表示
const NAX int = 10
b := 20
c := NAX + b
fmt.Println(c)
//字面常量
fmt.Println(123)
fmt.Println("hello world")
//硬常量 32
d:=c+32
e:="hello"
e=e+"world"
fmt.Println(d)
fmt.Println(e)
}
第四节:枚举iota
package main
iport "fmt"
func mian(){
const(
a = iota //iota = 0 静止 每新增一航 自动加一、重新定义跳转
b = iota // iota = 1 自动加以 如果在 同一行 加一
// b = iota c = iota 则 b = c = iota = 1
c = iota // iota = 2
d = iota // iota = 3
)
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
fmt.Println(d)
//定义变量 为 状态
value := a
fmt.Println(value)
value = b
fmt.Println(value)
}
func mian(){
// const(
//a = iota // iota = 0
// b // b = 1
// c // c = 2
//如果定义枚举是常量写在同一行值相同 换一行值加一
//在定义枚举时可以为其赋初始值 但是换行后不会根据值增长
)
const(
a = 10
b,c = iota,iota
d,e
)
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
fmt.Println(d)
fmt.Println(e)
}
第五节:算数运算符
package main
iport "fmt"
func mian(){
a := 10 // int
b := 0 // int
//整型数据相除结果为整型
//除数不能为0
c := a/b
fmt.Println(c)
}
// 取余运算
func mian(){
a := 10 // int
b := 2 // int
//取余运算符 取模运算符
//取余运算符只能用于整型数据
//取余运算符除数不能为0
c := a%b
fmt.Println(c)
}
//自增自减运算符
func mian(){
a := 10 // int
// a = a+1
// ++ 只能写在变量的后面 叫做后自增
// -- 只能写在变量的后面 叫做后自减
//不能将自增自减运用在表达式中 如 b --a 会报错误
fmt.Println(a)
}
第6节:类型转换
package main
iport "fmt"
func mian(){
a := 10
b := 3.99
//将不同类型 转成同样类型计算操作
//类型转换格式 数据类型(变量) 数据类型 (表达式)
// c := float64 (a) *b
//将浮点类型转成整数型数据,保留浮点整数部分,舍弃小数部分,不会进行四舍五入
c := a * int(b)
fmt>println(c)
}
func main(){
//虽然int 32和 int 64 都是整数类型 单数不允许相互转换
//只有类型匹配的数据才能进行计算
// 在go语言中习惯将低类型 转成高类型 保证数据完整性
var a int32 = 10
var b int64 = 20
c := int64(a) + b
fmt.Println(c)
fmt.Println("%T",c)
}
func mian(){
//fmt.Printf("%周%天\n",46/7,46%7)
//编程实现107653秒是几天几小时几分钟几秒?
//miao:=107653
//fenzhong:=miao/60
//xiaoshi:=fenzhong/60
//tian:=xiaoshi/24
//time:=107653
//fmt.Println("天:",time/60/60/24%365)
/fmt.Println("时:",time/60/60%24)
//fmt.Println("分:",time/60%60)
//fmt.Println("秒:",time%60)
}
第7节 :赋值运算符
package main
import "fmt"
func mian(){
a := 10
//a = a+5
//a +=5
//a -= 5
//a *= 5
//a /=5
// a % = 5 a = a%5
// a += 5*3 a = a + 5*3
// a += 5*a a = a+ 5*a
//a ++
b := a +5*a
fmt.Println(a)
fmt.Println(b)
}
第8节:比较运算符
package main
import "fmt"
func main(){
//关系运算用于程序中的逻辑判断 返回值为布尔类型
a := 10
// b := 20
// == 两边相等 两边一致 如 a == a true a== b false
//fmt.Println(a == b) false
//fmt.Println(a <= b) true
fmt.Println(a <= b) true
}
第9节:逻辑运算符
package main
import "fmt"
func main(){
//逻辑非 ! 非真为假 非假为真
//只能对bool 类型变量或者bool类型表达使用逻辑非运算符
var a bool = false
a = true
b := 20
c := 20
fmt.Println(!(b==c)) // fmt.Println(!b) 报错 err
fmt.Println(!a)
}
func mian(){
// 逻辑与 && 表达式 1 && 表达式2 同真为真 其余为假
a:=10
b:=20
c:=30
d:=20
fmt.Println(a>b && c<d)
}
func main(){
//逻辑或 || 表达式1 || 表达式2 同假为假 其余为真
a:=10
b:=20
c:=30
d:=20
fmt.Println(a<b || c>d)
}
func mian(){
//去地址运算符
//var a int =10
//fmt.Println(&a)
a:=10
//指针变量
p:=&a
//* 取值运算符
fmt.Println(*p)
}
第10节:运算优先级
package main
import "fmt"
//第一优先级 括号 () 结构体成员. 数组下标[]
//第二优先级 单目运算符
//第三优先级 逻辑非! 取地址& 取值* 自增++ 自减--
//第四优先级 双目运算符
//乘除 * / %
//加减 + -
//关系 == != > >= < <=
//逻辑 || &&
//赋值 = += -= *= /= %=
func main1002(){ var year int
fmt.Println("请输入年份")
fmt.Scan(&year)
//1、能够被400整除 2、能够被4整除 不能被100整除
//
b:=year%400==0 || year %4==0 && year%100!=0
fmt.Println(b)
}
第11节:if 条件语句
package mian
import "fmt"
func mian(){
var score int
fmt.Scan(&score)
//if 条件判断根据是否满足条件指向对应的代码
//else 作为if 补充条件 如果条件不满足执行else代码
//格式 if 表达式{
// 代码体
// }else {
// 代码体
//}
if score >700 {
fmt.Println("我要上清华")
} else{
fmt.Println("我要上蓝翔")
}
}
func main(){
a:=10
if a>5{
fmt.Println(a)
}
//采用就近原则 找到上面尚未配对的if进行匹配操作
if a>8{
fmt.Println(a)
}else {
fmt.Println("haha")
}
}
func main(){
//三只小猪称体重
//a=10 b=8 c=12
var a,b,c int
fmt.Println("请输入三只小猪体重")
fmt.Scan(&a,&b,&c)
if a > b {
if a>c{
fmt.Println("a重")
}else{
fmt.Println("c重")
}
}else {
if b>c{
fmt.Println("b重")
}else{
fmt.Println("c重")
}
}
}
package main
import "fmt"
//if 可以嵌套 可以判断区间 执行效率比较低
//switch 执行效率高 不能嵌套和区间判断
func main() {
var w int
fmt.Scan(&w)
//swich中的只不能是浮点型数据 浮点型数据是一个约等于的数据
//switch 选择想可以是一个整型变量
switch w {
case 1:
fmt.Println("星期一")
case 2:
fmt.Println("星期二")
case 3:
fmt.Println("星期三")
case 4:
fmt.Println("星期四")
case 5:
fmt.Println("星期五")
case 6:
fmt.Println("星期六")
case 7:
fmt.Println("星期日")
//如果输入的值没有找到 默认进入default 中
default:
fmt.Println("输入错误")
}
//switch score>700 {
//case true:
// fmt.Println(score)
//case false:
// fmt.Println(score)
//}
}
func main(){
var score int
fmt.Println("请输入分数")
fmt.Scan(&score)
switch score/10 {
case 10:
//fmt.Println("A")
fallthrough//让switch执行下一个分支的代码 如果不写 执行到下一个分支就会自动停止
case 9:
fmt.Println("A")
case 8:
fmt.Println("B")
case 7:
fmt.Println("C")
case 6:
fmt.Println("D")
default:
fmt.Println("E")
}
}