本章学习的是符号意义和操作
1. + - * 加减乘号
以加号为例
package main
import "fmt"
func main() {
// + 加号
// 1正数,2相加,3字符串拼接
var n1 int = +10
fmt.Println(n1)
var n2 int = 4 + 7
fmt.Println(n2)
var s1 string = "abc" + "def"
fmt.Println(s1)
}
2.除号 /
类似cpp,双整形除法是整除,含有浮点数的除法是小数除法。
package main
import "fmt"
func main() {
// / 除号:和cpp一样,int整除,有浮点就是除法
fmt.Println(10/3)
fmt.Println(10.0/3)
fmt.Println(10/3.0)
}
3.取余=取模 %
a%b就是,a 整除b之后的余数。等价于 a%b = a - a/b*b
package main
import "fmt"
func main() {
// %取余操作 ,且操作数都为整数 等价于 a%b = a - a/b*b
fmt.Println(10 % 3)
fmt.Println(-10 % 3)
fmt.Println(10 % -3)
fmt.Println(-10 % -3)
}
4. 自增自减 ++ --
go的自增自减为了防止混淆只能单独一行表示 + 1 和 -1 操作,且符号只能放在后面a++。不能像java和cpp里一样,分运算和使用的先后。
5.当前代码总览
package main
import "fmt"
func main() {
// + 加号
// 1正数,2相加,3字符串拼接
var n1 int = +10
fmt.Println(n1)
var n2 int = 4 + 7
fmt.Println(n2)
var s1 string = "abc" + "def"
fmt.Println(s1)
// / 除号:和cpp一样,int整除,有浮点就是除法
fmt.Println(10 / 3)
fmt.Println(10.0 / 3)
fmt.Println(10 / 3.0)
// %取余操作 ,且操作数都为整数 等价于 a%b = a - a/b*b
fmt.Println(10 % 3) // 3 * 3 + 1
fmt.Println(-10 % 3) // 3 * -3 + -1
fmt.Println(10 % -3) // -3 * -3 + 1
fmt.Println(-10 % -3) // 3 * -3 + -1
//++自增 ,--自减
// 和cpp与java不同,go的 ++ 和 -- 只是单纯加1,且只能放在后面。不能参与运算,只能单独使用
var a int = 10
a++
fmt.Println(a)
// ++a 错误
// a = (a++) + 1 错误,只能单独用
}
6.赋值运算符
=, +=,-=,*=,/=,%=
和cpp一样
7.关系运算符
和cpp一样
8.位运算符
&位与, |位或 ,^异或
9.其他用法
&取地址 *地址取值
package main
import "fmt"
//位运算符&位与, |位或 ,^异或
func main() {
var age int = 18
fmt.Println("age对应的地址是",&age)
var ptr = &age
fmt.Println("ptr对应的地址是",ptr, ",指向的值是",*ptr)
}
10.运算符优先级
按表格从低到高
11.获取终端输入
在api的fmt包中有一些提供输入的函数
常用
1.scanln
到换行停止读取
类似于c的scanf(&a),参数是一个变量地址。
输入数据类型要匹配,底层会自动进行类型判定。输入错误的类型,不会报错,但是输入会出现偏差。
package main
import "fmt"
//地址符号
func main() {
var age int = 18
fmt.Println("输入age")
//通过往地址上写入东西来改变变量值
fmt.Scanln(&age)
fmt.Println("age=",age)
}
2.scanf
按某种格式要求,按空格分隔读取内容
格式控制符
package main
import "fmt"
func main() {
/*var age int = 18
fmt.Println("输入age")
//通过往地址上写入东西来改变变量值
fmt.Scanln(&age)
fmt.Println("age=",age)*/
var name string
var vip bool
fmt.Scanf("%s %t", &name, &vip)
fmt.Println("name=", name, "vip=", vip)
}