GoLang的语言基础
1输出
在终端将想要展示的数据显示出来,例如:欢迎登录、请输入用户名等。。。
- 内置函数
- println
- fmt包(推荐)
- fmt.Print
- fmt.Println
扩展:进程里有 stdin/stdout/stderr 。
package main
import "fmt"
func main() {
// 基于内置函数(不推荐)
//print("好吃不过饺子 \n")
//println("好吃不过饺子")
// fmt包(推荐)
//fmt.Print("好吃不过饺子 \n")
//fmt.Println("好吃不过饺子")
//fmt.Println("我叫", "zlw", "我媳妇", "是个", "....")
//fmt.Println("我叫zlw我媳妇是个....")
// fmt包 扩展:格式化输出
// %s,占位符 "文本"
// %d,占位符 整数
// %f,占位符 小数(浮点数)
// %.2f,占位符 小数(保留小数点后2位,四舍五入)
// 百分比
fmt.Printf("老汉开着%s,去接%s的媳妇,多少钱一次?%d块。嫂子给打折吧,%.2f怎么样?小哥哥包你100%%满意", "车", "老男孩", 100, 3.889)
}
2.注释
- 单行注释, //
- 多行注释, /* */
快捷:ctrl + ?
3.初识数据类型
- 整型,整数
- 字符串,文本
- 布尔型,真假
package main
import "fmt"
func main() {
// 整型
fmt.Println(666)
fmt.Println(6 + 9)
fmt.Println(6 - 9)
fmt.Println(6 * 9)
fmt.Println(16 / 9) // 商
fmt.Println(16 % 9) // 余数
// 字符串类型,特点:通过双引号
fmt.Println("zlw")
fmt.Println("钓鱼要掉刀鱼,刀鱼到岛上钓")
fmt.Println("zlw" + "3213")
//fmt.Println("zlw" + 666)
fmt.Println("zlw" + "666")
// 对比
fmt.Println("1" + "2") // 结果:"12"
fmt.Println(1 + 2) // 结果:3
// 布尔类型,真假
fmt.Println(1 > 2) // false 假
fmt.Println(1 < 2) // true 真
fmt.Println(1 == 2)
fmt.Println(1 >= 2)
fmt.Println("zlw" == "")
// 超前
if 2 > 1 {
fmt.Println("hello GO!!!")
} else {
fmt.Println("hello")
}
}
4.变量
4,1
声明 + 赋值
var sd string = "zlw"
fmt.Println(sd)
var age int = 73
fmt.Println(age)
var flag bool = true
fmt.Println(flag)
先声明后赋值
// 声明了一个字符类型变量 sd
var sd string
// 给sd变量赋值
sd = "zlw"
fmt.Println(sd)
4.2 变量名要求
【要求】变量名必须只包含:字母、数字、下划线
【要求】数字不能开头
【要求】不能使用go语言内置的关键字
break、default、func、interface、select、case、defer、go、map、struct、chan、else、goto、package、switch、const、fallthrough、if、range、type、continue、for、import、return、var
- 建议
- 变量名见名知意:name/age/num ; v1、v2、v3
- 驼峰式命名:myBossName / startDate
5.常量
不可被修改的变量。
package main
import "fmt"
func main() {
// 定义变量
//var name string = "zlw"
//var name = "zlw"
name := "zlw"
name = "周洛薇"
fmt.Println(name)
// 定义常量
//const age int = 98
const age = 98
fmt.Println(age)
}
5.1 因式分解
package main
import "fmt"
func main() {
// 定义变量
//var name string = "zlw"
//var name = "zlw"
name := "zlw"
name = "zlw"
fmt.Println(name)
// 定义常量
//const age int = 98
const age = 98
fmt.Println(age)
}
5.2 全局
package main
import "fmt"
const Data = 999
const (
pi = 3.1415926
gender = "男"
)
func main() {
// 定义变量
//var name string = "zlw"
//var name = "zlw"
name := "zlw"
name = "周洛薇"
fmt.Println(name)
// 定义常量
//const age int = 98
const age = 98
fmt.Println(age)
// 常量因式分解
const (
v1 = 123
v2 = 456
//pi = 9.9
)
fmt.Println(v1, v2, pi, gender)
}
5.3 iota
当做一个在声明常量时的一个计数器。
package main
const (
monday = iota + 1
tuesday
wednesday
thursday
friday
saturday
sunday
)
const (
n1 = iota
n2
n3
)
func main() {
// iota
// 示例1
/*
const (
v1 = 1
v2 = 2
v3 = 3
v4 = 4
v5 = 5
)
fmt.Println(v1, v2, v3, v4, v5)
*/
// 示例2
/*
const (
v1 = iota
v2
v3
v4
v5
)
fmt.Println(v1, v2, v3, v4, v5)
*/
// 示例3
/*
const (
v1 = iota + 2
v2
v3
v4
v5
)
fmt.Println(v1, v2, v3, v4, v5)
*/
// 示例4:
/*
const (
v1 = iota + 2
_
v2
v3
v4
v5
)
fmt.Println(v1, v2, v3, v4, v5)
*/
}
6.输入
让用户输入数据,完成项目交互。
fmt.Scan
fmt.Scanln
fmt.Scanf
package main import "fmt" func main() { // 示例1:fmt.Scan /* var name string fmt.Println("请输入用户名:") fmt.Scan(&name) fmt.Printf(name) */ // 示例2:fmt.Scan var name string var age int fmt.Println("请输入用户名:") // 当使用Scan时,会提示用户输入 // 用户输入完成之后,会得到两个值:count,用户输入了几个值;err,用输入错误则是错误信息 _, err := fmt.Scan(&name, &age) if err == nil { fmt.Println(name, age) } else { fmt.Println("用户输入数据错误", err) } // 特别说明:fmt.Scan 要求输入两个值,必须输入两个,否则他会一直等待。 }
package main
import "fmt"
func main() {
// 示例1:fmt.Scanln
/*
var name string
fmt.Print("请输入用户名:")
fmt.Scanln(&name)
fmt.Printf(name)
*/
// 示例2:fmt.Scanln
var name string
var age int
fmt.Print("请输入用户名:")
// 当使用Scanln时,会提示用户输入
// 用户输入完成之后,会得到两个值:count,用户输入了几个值;err,用输入错误则是错误信息
count, err := fmt.Scanln(&name, &age)
fmt.Println(count, err)
fmt.Println(name, age)
// 特别说明:fmt.Scanln 等待回车。
}
7.条件语句
7.1 最基本
if 条件 {
成立后,此代码块执行
}else{
不成立,此代码块执行
}
if 条件 {
成立后,此代码块执行
}
7.2 多条件判断
if 条件A{
...
}else if 条件B{
...
}else if 条件C{
...
}else{
...
}
7.3 嵌套
package main
import "fmt"
func main() {
fmt.Println("欢迎致电10086,1.话费相关;2.业务办理;3.人工服务。")
var number int
fmt.Scanln(&number)
if number == 1 {
fmt.Println("话费服务,1.交话费;2.查询。")
var n1 int
fmt.Scanln(&n1)
if n1 == 1 {
fmt.Println("缴话费啦")
} else if n1 == 2 {
fmt.Println("查话费了")
} else {
fmt.Println("输入错误")
}
} else if number == 2 {
fmt.Println("业务办理")
} else if number == 3 {
fmt.Println("人工服务")
} else {
fmt.Println("输入错误")
}
// 建议:条件的嵌套不要太多
}