Go 语言入门指南:基础语法和常用特性解析(下) | 青训营

75 阅读4分钟

五、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、垃圾回收