1、环境搭建和配置就不记录了
2、常用命令
- go run main.go :本地运行命令
- go build main.go:生成执行文件
- go install main.go : 生成可执行文件在/bin文件夹内 ,若是文件包则会生成包文件在/pkg内
总结:
1、 一个文件夹可以称为一个包
2、一个文件夹(包)内可以创建多个文件
3、在同一个包内的文件文件中必须制定 包名称相同
包的分类:
1、如果是main包,则必须写一个main函数,此函数就是项目的入口(go build编译会生成一个可执行文件)
2、非main包。用来将代码分类的(go build编译会生成一个包文件)
代码演示:
//入口文件main.go:
package main
import (
"fmt"
"mTest/api" //需要先把包导入在使用
)
func main() {
fmt.Println("这是main")
add() //同一个包则不需要导入操作,可以直接调用
api.Apifun()
}
//文件add.go:
package main
import (
"fmt"
)
func add() {
fmt.Println("我是Add()")
}
//文件api/api.go:
package api //这是我创建的新包
import (
"fmt"
)
func Apifun() { //如果该方法需要被别的包调用则方法名首字母需要大写
fmt.Println("这是apifun")
}
运行后结果:
1、内置函数(不推荐使用)
print:不换行 ,println:换行
print("好家伙")
print("好家伙2\n") // \n换行
println("好家伙3")
println("好家伙4")
2、fmt包(go编译器自带包)
fmt.Print("fmt好家伙")
fmt.Print("fmt好家伙2")
fmt.Println("fmt好家伙3")
fmt.Println("fmt好家伙4")
3、扩展:格式化输出
- %s,占位符用于格式化字符串
- %d,占位符用于格式化整型
- %f,十进制小数
- %.2f,保留小数点后两位(四舍五入)
fmt.Printf("我试试%s%d%f----%.2f", "哎嘿嘿", 34, 1.11, 2.43643)
//输出:我试试哎嘿嘿341.110000----2.44
4、注释
- 单行注释, //
- 多行注释, /* */
- 快捷键:选中代码 然后点击键盘的 【contrl + ?】
- 变量有作用域之分,每个大括号就是一个作用域,每个作用域中都可定义相关的局部变量。
package main
import "fmt"
var name = "名称"//全局变量
name := "名称"//全局变量不能这样写(:=)
func main() {
name := "张三"
if true {
name := "李四"
fmt.Println(name)//李四 ,从里往外找
}
fmt.Println(name)//张三
}
fmt.Println(name)//名称
- 在定义多个变量时候,可以通过因式分解的方式进行简化代码。
var (
name = "武沛齐"
age = 18
gender string
)
- 常量:不可被修改的变量
// 定义变量
name := "名称"
name = "222"
fmt.Println(name)
// 定义常量
const age = 98//不能再次修改
fmt.Println(age)
- 常量之iota
有序化自动生成计数器 ,注意:只支持const
const (
n1 = iota
n2
n3
)
fmt.Println(n1,n2,n3)//0 1 2
const (
n1 = iota + 2
n2
n3
)
fmt.Println(n1, n2, n3)//2 3 4
const (
n1 = iota + 2
_
n2
n3
)
fmt.Println(n1, n2, n3) //2 4 5
6、一些记不住的小知识点
- go里边声明的变量就一定要用不然会报错,可以把该变量名改成 _ 即可
switch 1 + 1 {
case 1://注意:数据类型要一致
fmt.Println("111")
case 2://进这个
fmt.Println("2222")
default:
fmt.Println("3333")
}
8、break、continue
- break:结束循环
- continue:结束当前进程进入下一次循环
跳跃到指定行,然后执行代码。
aa := 1
if aa == 1 {
goto aagoto //跳跃到aagoto
}
fmt.Println("bb") //跳过了这行直接到 aagoto 了
aagoto:
fmt.Println("aa")
输出:aa