go 语言基础

运算符是一种特殊的符号,用以表示数据的运算赋值和比较
运算符
        算术运算符: +,-,*,/,%,++,--
        赋值运算符:=,+=,-=,*=,/=,%=
        关系运算符: ==,!=,>,<,>=,<=
        逻辑运算符: &&,||,!
        位运算符:   &,|,^
        其他运算符: &,*
       
算术运算符
 
package main

import (
	"fmt"
	_"image"
)
func main(){
	//+ 整数,相加操作,拼接操作
	var n1 int = +10
	fmt.Println(n1)
	var n2 int = 4 + 9
	fmt.Println(n2)
	var s1 string = "cx" + "draw"
	fmt.Println(s1)
	// /除号
	fmt.Println(10/3)//两个int数据运算结果一定为整数类型
	fmt.Println(10.0/3)// 浮点类型参与运算结果为浮点运行
	// %取模
	fmt.Println(10%3)
	fmt.Println(-10%3)
	fmt.Println(10%-3)
	//++自增
	var a int = 10
	a++
	fmt.Println(a)
//go 语言里++,-- 操作比较简单,只能单独使用不能参与运算
// go 语言里++,-- 只能在变量后面不能写在前面

}
/* 执行结果
10
13
cxdraw
3
3.3333333333333335
1
-1
1
11 */

    赋值运算

package main
import "fmt"
func main(){
	var num1 int =10
	fmt.Println(num1)
	var num2 int = (10+20)% 3 + 3 - 7 //= 号右侧运算完成后,在赋值给左侧
	fmt.Println(num2)
	//+=
	var num3 int = 10
	fmt.Println(num3)
	num3 +=2  //等价num3 = num3+2
	fmt.Println(num3)
	// 交换两个数的值
	var a int = 8
	var b int = 4
	fmt.Printf("a=%v,b=%v\n",a,b)
	//交换引入中间值
	var c int
	c = a
	a = b
	b = c

	fmt.Printf("交换后的值:a=%v,b=%v\n",a,b)


}
/* 执行结果
D:\golang\goproject\src\src01>go run demo18\main.go
10
-4
10
12
a=8,b=4
交换后的值:a=4,b=8 */

  

关系运算符  结果只能是bool 类型 要么true 要么false(判断对错)
package main
import "fmt"
func main(){
	fmt.Println(5==9)//判断5,9 是否相等 不相等false
	fmt.Println(5!=9)//判断5,9 是否不等 不等 true
	fmt.Println(5>9) //判断5是否比9大 ,不比9大 就是false
	fmt.Println(5>=9)//判断5是否大于等于9 ,不大于等于9 就是错错是false
	fmt.Println(5<=9) // 判断5是否小于等于9,不小于等于9就是错,小于或者等于9 就是对true
	
/* 执行结果	
D:\golang\goproject\src\src01>go run demo19\main.go
false
true
false
false
true  */
}

  逻辑运算符

package main
import "fmt"
func main(){
	//与逻辑&&
	fmt.Println(true&&true)  //true
	fmt.Println(true&&false) // false
	fmt.Println(false&&true) //false
	fmt.Println(false&&false) //false
	fmt.Println("-------------------------------------------------")
	//或逻辑 ||
	fmt.Println(true||true)  //true
	fmt.Println(true||false) // true
	fmt.Println(false||true) // true
	fmt.Println(false||false) //false
	fmt.Println("------------------------------------------------")
	//非逻辑 取反
	fmt.Println(!true)  //false
	fmt.Println(!false) // true
/* 	执行结果
D:\golang\goproject\src\src01>go run demo20\main.go
true
false
false
false
-------------------------------------------------
true
true
true
false
------------------------------------------------
false
true
 */
}

  其他运算符

& 返回地址值;* 取地址值对应的数值

package main
import "fmt"
func main(){
	//定义一个变量
	var age int = 18
	fmt.Println("age对应的地址值",&age)
	var ptr *int = &age
	fmt.Println("ptr指向的值",*ptr)


}
/* 执行结果
D:\golang\goproject\src\src01>go run demo21\main.go
age对应的地址值 0xc00000a0b8
ptr指向的值 18 */

  运算符的优先级

优先级                  分类                    运算符                        结合性
1                       逗号                    ,                            左到右
2                       赋值运算符      =、+=、-=、*=、/=、%=、>=、<<=、&<、^=、|= 从右到左
3                       逻辑或                 ||
4                       逻辑与                 &&
5                       按位或                 |                              
6                       按位异或                ^                            
7                       按位与                 &
8                       相等/不相等              ==、!=                           左到右
9                       关系运算符               <、<=、>、>=                   左到右
10                      位移运算符               <<,>>                           左到右
11                      加减                  +、-                         左到右
12                      乘法、除法、取余        * 、/ 、%                      左到右
13                      单目运算                !、*、&、++、--、+、-          右到左
14                      后缀运算符               ()、[]、->                        左到右
为了提高有效级,可以加()
获取用户终端输入
func Scanln func Scanln(a ...interface{}) (n int, err error)
Scanln类似Scan,但会在换行时才停止扫描。最后一个条目后必须有换行或者到达结束位置。
package main
import "fmt"
func main(){
	//实现功能,键盘录入学生的年龄,姓名成绩,是否是vip
	//方式1:Scanln
	var age int
	fmt.Println("请录入年龄:")
	//传入age的地址目的:在Scanln函数中,对地址中的值进行改变的时候实际外面的age被影响了
	fmt.Scanln(&age)

	var name string
	fmt.Println("请录入姓名:")
	//传入name的地址目的:在Scanln函数中,对地址中的值进行改变的时候实际外面的name被影响了
	fmt.Scanln(&name)
	var score float32
	fmt.Println("请录入成绩:")
	//传入score的地址目的:在Scanln函数中,对地址中的值进行改变的时候实际外面的score被影响了
	fmt.Scanln(&score)
	var isVip bool
	fmt.Println("是否vip:")
	//传入isVIP的地址目的:在Scanln函数中,对地址中的值进行改变的时候实际外面的isVIP被影响了
	fmt.Scanln(&isVip)
//打印输出
fmt.Printf("学生年龄:%d 姓名:%s 成绩:%g是否vip:%t",age,name,score,isVip)
/* 执行结果
D:\golang\goproject\src\src01>go run demo22\main.go
请录入年龄:
15
请录入姓名:
chenxi
请录入成绩:
89.5
是否vip:
true
学生年龄:15 姓名:chenxi 成绩:89.5是否vip:true */
}

 func Scanf func Scanf(format string, a ...interface{}) (n int, err error)

Scanf从标准输入扫描文本,根据format 参数指定的格式将成功读取的空白分隔的值保存进成功传递给本函数的参数。返回成功扫描的条目个数和遇到的任何错误。

 

package main
import "fmt"
func main(){
//方式2:Scanf
	var age int
	var name string
	var score float32
	var isVip bool
	fmt.Println("请录入学生年龄,姓名,成绩,是否是vip,使用空格进行分割")
	fmt.Scanf("%d %s %g %t",&age,&name,&score,&isVip )
	//将上述数据在控制台打印输出
	fmt.Printf("学生年龄:%d 姓名:%s 成绩:%g是否vip:%t",age,name,score,isVip)
/* 	执行结果
	D:\golang\goproject\src\src01>go run demo22\main.go                                                                     
请录入学生年龄,姓名,成绩,是否是vip,使用空格进行分割                                                                 
18 chenxi 89.5 true                                                                                                     
学生年龄:18 姓名:chenxi 成绩:89.5是否vip:true    
 */
}

  

 

  

 

 

 

posted @ 2025-08-07 16:01  烟雨楼台,行云流水  阅读(5)  评论(0)    收藏  举报