Golang------基础函数
一、包管理
1、一个文件夹即为一个包。
2、在每个包中可以创建多个文件,也可创建多个包。
3、同一个包中的所有文件必须指定包名称,且必须相同
package main #包名称,main包,同一个包中的文件必须相同
import "fmt"
func main() {
fmt.Println("今天是星期四")
}
1.1 包的分类
main包:如果是main包,则必须要写一个main函数,此函数为此项目的入口(main主函数)。编译后生成一个可执行文件。
非main包:用来将代码进行分类。不同的类型功能的代码放在不同的包内,好进行查找使用
在文件夹中编写功能时,首字母要大写。
如果是大写,认为是共有的功能,外部的包可以调用此功能。
如果是小写,认为是私有的功能,外部的包不能调用此功能。
二、输出
在终端将想要展示的数据显示出来
2.1 分类
2.1.1 内置函数
print //不换行输出
println //换行输出
package main
func main() {
//内置函数
print("好吃")
print("好玩")
}
package main
func main() {
//内置函数
//print("好吃\n")
//print("好玩\n")
println("好吃")
println("好玩")
}
2.1.2 fmt包(推荐)
fmt.Print
fmt.Println
package main
import "fmt"
func main() {
//fmt包
fmt.Print("好吃")
fmt.Print("好玩")
}
package main
import "fmt"
func main() {
//fmt包
fmt.Println("好吃")
fmt.Println("好玩")
}
进程中由stdin/stdout/stderr。展示时应该在stdout中输出,但是内置函数会从stderr中输出,所以不推荐。
2.1.3 fmt格式化输出
package main
import "fmt"
func main() {
fmt.Printf("%s喜欢吃炸鸡,%d一份外卖,%.4f打折,65%%","lic",15,6.99458)
}
----------------------------------------------------------------------------------------
lic喜欢吃炸鸡,15一份外卖,6.9946打折,65%
%s //占位符"文本"
%d //占位符 整数
%f //占位符 小数(浮点数)
%.2f //占位符 小数(保留小数点后2位,四舍五入)
100%% //第二个%是百分比
三、注释
// //单行注释
/* */ //多行注释
Ctrl+? //快捷键:多行注释(注释类型为单行注释)
四、数据类型
4.1 整型
package main
import "fmt"
func main() {
fmt.Println(666)
fmt.Println(6 + 9)
fmt.Println(6 - 9)
fmt.Println(6 * 9)
fmt.Println(6 / 9)
fmt.Println(16 / 9)
fmt.Println(16 % 9) //取余
}
----------------------------------------------------------------------------------------
666
15
-3
54
0
1
7
4.2 字符串类型
" " //双引号引用
package main
import "fmt"
func main() {
fmt.Println("sweet"+"persation")
fmt.Println("1" + "2")
fmt.Println(1 + 2)
}
----------------------------------------------------------------------------------------
sweetpersation #字符串与字符串之间可以通过'+'相连接,但字符串不能与整形连接
12
3
4.3 布尔类型
package main
import "fmt"
func main() {
fmt.Println(1 > 2) //布尔类型判断真假
fmt.Println(1 < 2)
}
----------------------------------------------------------------------------------------
false
true
五、变量
5.1 创建变量
变量名只能是:字母、数字、下划线,数字不能开头,不能使用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
方法一:声明+赋值
package main
import "fmt"
func main() {
var flower string = "花" //声明flower是一个字符串,给它赋值为花
fmt.Println(flower)
var age int=20 //声明age是一个整型数据,给它赋值为20
fmt.Println(age)
var flag bool=false //声明flag是一个布尔值,给它赋值为false
fmt.Println(flag)
}
----------------------------------------------------------------------------------------
花
20
false
方法二:先声明后赋值
package main
import "fmt"
func main() {
var flower string //声明flower是一个字符串
flower = "花" //给flower赋值
fmt.Println(flower)
}
---------------------------------------------------------------------------------------
花
package main
import "fmt"
func main() {
var name string
fmt.Scanf("%s",&name) //表示给name赋予了一个为%s的值,在后面执行时需要自己输入
fmt.Println(name)
}
5.2 变量简写
方法一
方法一:var name = "xyw"
方法二:name := "xyw"
var v1,v2 = 11,12
v3,v4 := 33,44
方法二
var name,message,data string
name ="xyw"
message ="address"
......
方法三
#因式分解,声明变量,类型不同
package main
import "fmt"
func main() {
var ( name = "xyw"
age = 20
message = "address"
salary = 100000
gender string //只声明但不赋值,默认为""
length int //只声明但不赋值,默认为0
bool //只声明但不赋值,默认为false
)
fmt.Println(name,age,message,salary,gender) //声明变量后一定要使用
}
xyw 20 address 100000
5.3 变量的作用域
如果定义了大括号,那么大括号中的定义的变量:
●不能被上级使用
●可以在同级使用
●哪一级的括号内的只能在那一级括号及其内部括号内使用
5.3.1 全局变量
全局变量不能用":="简写
项目中寻找变量的最后一环
5.3.2 局部变量
全局变量、局部变量在shell函数博客涉及
5.4 赋值与内存
name := "xyw"
myname := name //在此过程中,name:=xyw占用了一份内存,再执行myname时,并不是直接将myname指向"xyw",而是又占用了一份内存指向"xyw",与python不同
//使用int、string、bool这三种数据类型时,如果遇到变量的赋值则会拷贝一份。
package main
import "fmt"
func main() {
name := "xyw"
myname := name
fmt.Println(name,&name) //&name表示查看name的内存地址
fmt.Println(myname,&myname)
}
xyw 0xc00004a240
xyw 0xc00004a250