五、go语言的输入输出
go语言的输入输出也是在fmt包中的
输入的三种方式:
fmt.Scanf()
fmt.Scanln()
fmt.Scan()
输出的三种方式:
fmt.Printf()//格式化输出
fmt.Println()//换行输出
fmt.Print()//直接输出
六、go语言数据类型转换
go语言不存在隐式类型转换,因此所有的类型转换都必须是显示的声明。整型不能转换为布尔类型。不同的数据类型其内存空间分配的大小是不同的。
转换后的变量 := 要转换的类型(变量)
七、go语言运算符
go语言的运算符中赋值运算符有 =(简单的赋值运算符,将一个表达式的值赋给一个左值),+=(相加后再赋值),-=(相减后再赋值),* =(相乘后再赋值),/=(相除后再赋值),%=(取余后再赋值),<<=(左移后赋值),>>=(右移后赋值),&=(按位与后赋值),|=(按位或后赋值),^=(按位异或后赋值);关系运算符有 ==(等于), !=(不等于), >(大于), <(小于), >=(大于等于), <=(小于等于);逻辑运算符有 &&(与),||(或),!(非);位运算符有 &(按位与,两个数都是1结果为1,否则为0),|(按位或,两个数都是0结果为0,否则为1),^(按位异或,两个数不同结果为1,否则为0),&^(位清空,a &^ b,对于b上的每个数值,如果为0,则取a对应位上的数值,如果为1,则取0),<<(左移运算符,左移n位就是乘以2的n次方,整体向左移,高位丢弃,低位补0),>>(右移运算符,右移n位就是除以2的n次方,整体向右移);指针运算符有 &(取地址,得到该变量对应的存储空间地址),* (取指针所指向的地址对应的变量);自增和自减运算符++,--
//在进行自增和自减运算是只有a++,而没有++a,自减也同理
var a int = 10
a++
fmt.Println(a)
a--
fmt.Println(a)
八、go语言的流程控制
go语言的流程控制和其他语言一样,分为顺序结构、分支结构和循环结构,其中选择结构和循环结构需要重点学习。
1、顺序结构
程序从上到下逐行执行,没有判断也没有跳转,就是正正常常的语句
2、分支结构
if语句
单分支语句 if语句
package main
import (
"fmt"
)
func main() {
var score int
score = 80
if score >= 60
fmt.Println("及格")
}
双分支语句
if ... else ...的结构,例如判断闰年这样的经典题目:1能整除4且不能整除100 2能整除400
package main
import (
"fmt"
)
func main() {
var year int
fmt.Println("请输入年份:")
fmt.Scanln(&year)
if year% 4 == 0 && year% 100 != 0 || year % 400 ==0
fmt.Println("你输入的年份是闰年")
else
fmt.Println("你输入的年份不是闰年")
}
多分支语句 例如判断成绩等级 第一种 if xxx { xxx } else if xxx { xxx } else { xxx }结构
package main
import (
"fmt"
)
func main() {
var score int
fmt.Scan(&score)
if score >= 90
fmt.Println("优秀")
else if score >= 80:
fmt.Println("良好")
else if score >= 70:
fmt.Println("中等")
else if score >= 60:
fmt.Println("及格")
else
fmt.Println("不及格")
}
第二种 switch ... case ... 使用switch ... case ...语句时,不需要和C/C++一样需要在每个case后面都加上break以防止一直判断,go语言中不需要每个都加break。
package main
import (
"fmt"
)
func main() {
var score int
fmt.Scan(&score)
switch {
case score >= 90:
fmt.Println("优秀")
case score >= 80:
fmt.Println("良好")
case score >= 70:
fmt.Println("中等")
case score >= 60:
fmt.Println("及格")
default:
fmt.Println("不及格")
}
}
3、循环结构
go语言中只有for循环,没有while和do ... while循环 例如:打印九九乘法表
package main
import (
"fmt"
)
func main() {
for i := 1; i < 10; i++ { //外层循环,从1开始,循环十次
for j := 1; j <= i; j++ { //内层循环,从1开始,j<=i
fmt.Printf("%d*%d=%d\t", j, i, i*j)
}
fmt.Println() //换行输出
}
}
4、break,continue,fallthrough,goto
break语句 用于结束当前 for 循环,if语句或跳出 switch 语句。
continue语句 跳过当前循环的剩余语句,然后继续进行下一轮循环。
fallthrough语句 穿透case,使用fallthrough会强制执行后面的case语句,fallthrough不会判断下一条case的表达式是否为true。
goto语句 将控制转移到被标记的语句。
九、go语言所具有的特性
1、语法简单,学习曲线平缓,简洁易学,go语言去除了一些复杂的概念和冗余的语法,使得编写代码变得更加简单,更适合初学者。; 2、高性能,高并发,能够高效地处理并发任务,从而提升程序的性能; 3、丰富的标准库,提高代码的可维护性;; 4、完善的工具链:内置工具,以显著提高开发效率和代码质量; 5、静态链接 6、跨平台支持,为软件开发人员提供了更大的灵活性和便利性; 7、快速编译 8、社区活跃,有庞大的开发者群体。 9、垃圾回收