You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5.5 KiB
5.5 KiB
包管理
- 一个文件夹可以称为一个包
- 在文件夹(包)中可以创建多个文件
- 在同一个包下的文件中,必须指定包名称,且包名称要相同
重点:关于包的分类
- main包
- 非main包
如果是main包,必须写一个main函数,此函数就是项目的入口(main主函数),编译生成的就是一个可执行文件
非main包,用来将代码分类,分别放在不同的包和文件中
文件夹中编写功能是,功能(方法)的名字要大写 = >这样才能让外部调用
小写的只能内部调用
注意:
- 调用其他包的功能,需要先 import 导入,然后再使用;调用自己包中的功能时,直接调用即可(无需导入)
- 文件中的函数首字母是小写,表示此函数只能被当前包内部文件调用。首字母是大写,则意味着任何包都可以调用。
输出
在终端将想要展示的数据显示出来,例如:欢迎登录、请输入用户名等
- 内置函数
- println
- fmt包(推荐)
- fmt.Print
- fmt.Println
扩展:进程里有 stdin/stdout/stderr
注释
单行,多行
数据类型
- 整型,整数
- 字符串,文本
- 布尔型,真假
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("lihui")
fmt.Println("钓鱼要掉刀鱼,刀鱼到岛上钓")
fmt.Println("lihui" + "SB")
//fmt.Println("lihui" + 666)
fmt.Println("lihui" + "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("lihui" == "sb")
// 超前
if 2 > 1 {
fmt.Println("叫爸爸")
} else {
fmt.Println("孙子")
}
}
变量
可以理解为昵称。
-
声明 + 赋值
var sd string = "老男孩lihui" fmt.Println(sd) var age int = 73 fmt.Println(age) var flag bool = true fmt.Println(flag)
-
先声明后赋值
// 声明了一个字符类型变量 sd var sd string // 给sd变量赋值 sd = "老男孩lihui" fmt.Println(sd)
变量名要求
- 只包含字母、数字、下划线
- 不能数字开头
- 不能使用关键字
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:= "lihui"
go编译器会认为声明变量不使用 就是耍流氓,声明必须使用,否则报错
作用域
如果我们定义了大括号,那么在大括号中定义的变量。
- 不能被上级使用。
- 可以在同级使用。
- 可以再子级使用。
全局变量,未写在函数中的变量称为全局变量;不可以使用v1:=xx
方式进行简化;可以基于因式分解方式声明多个变量;项目中寻找变量时最后一环。
局部变量,编写在函数{}里面的变量;可以使用任意方式简化;可以基于因式分解方式声明多个变量;
赋值及内存相关
name := "lihui"
name := "lihui"
nickname := name
name := "lihui"
nickname := name
name = "lihuibear"
注意事项
使用int、string、bool这三种数据类型时,如果遇到变量的赋值则会拷贝一份。【值类型】
常量
const
可以定义局部,可以定义全局
iota
计数
package main
import "fmt"
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)
*/
}
输入
让用户输入数据,完成项目交互。
- fmt.Scan
- fmt.Scanln
- fmt.Scanf
条件语句
最基本
if 条件 {
成立后,此代码块执行
}else{
不成立,此代码块执行
}
多条件
package main
import "fmt"
func main() {
var length int
fmt.Print("请输入你的长度:")
fmt.Scanln(&length)
if length < 1 {
fmt.Println("没用的东西,还特么是坑")
} else if length < 6 {
fmt.Println("刚刚能用")
} else if length < 18 {
fmt.Println("生活和谐")
} else {
fmt.Println("太特么大了")
}
}
嵌套
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("输入错误")
}
// 建议:条件的嵌套不要太多
}