1)变量的声明

package main

import "fmt"

func main() {
//声明和赋值同时进行
var name string = "hello"

//先声明后赋值
var nickname string
nickname = "world"

//根据赋值的内容决定变量的类型
age := 18

fmt.Println(name)
fmt.Println(nickname)
fmt.Println(age)
}

运行结果:

hello
world
18

2)流程控制

有条件的for 循环

package main

import "fmt"

func main() {
// 指定循环次数
for i := 0; i < 5; i++ {
fmt.Println(i)
}
}

执行结果

% go run main.go
0
1
2
3
4

"while"循环,Go语言中是有while关键字的。通过无条件for循环实现死循环效果

package main

import "fmt"

func main() {
i := 0
for {
fmt.Println(i)
if i > 5 {
fmt.Println("循环次数够了")
break
}

i++
}
}

运行结果:

% go run main.go
0
1
2
3
4
5

3)捕获用户终端输入

package main

import "fmt"

func main() {
var input int
for {
// 打印提示字符串,不使用fmt.Println是为了提示字段不换行显示
fmt.Printf("请输入数字: ")
// 捕获用户输入,写入变量input对应的内存地址
fmt.Scanln(&input)

switch input {
case 1:
fmt.Printf("用户输入的是 <%d>\n", input)
case 2:
fmt.Printf("用户输入的是 <%d>\n", input)
case 3:
fmt.Printf("用户退出\n")
// 使用break只是跳出switch逻辑,return退出整个程序
return
default:
fmt.Printf("用户输入错误,重新输入\n")
}
}
}

运行结果

E:\code\wgwgo>go run main.go
请输入数字: 1
用户输入的是 <1>
请输入数字: 2
用户输入的是 <2>
请输入数字: 4
用户输入错误,重新输入
请输入数字: 3
用户退出

E:\code\wgwgo>

4)打印输出

fmt.Println 、fmt.Printf、fmt.Sprintf的区别

package main

import "fmt"

func main() {
//声明和赋值同时进行
var name string = "hello"

//先声明后赋值
var nickname string
nickname = "world"

//根据赋值的内容决定变量的类型
age := 18
// 不可以渲染占位符,但是自动添加\n,命令结果直接stdout输出
fmt.Println("%s %s 我今年 %d 岁", name, nickname, age)
// 可以渲染占位符,但是不会自动添加\n,命令结果直接stdout输出
fmt.Printf("%s %s 我今年 %d 岁", name, nickname, age)
// 可以渲染占位符,但是不会自动添加\n,命令结果赋值给变量。
ret := fmt.Sprintf("你好,我%d岁", age)
fmt.Println(ret)
}

运行结果

%s %s 我今年 %d 岁 hello world 18
hello world 我今年 18
你好,我18岁