Go
一、简介
产自:谷歌
类型:编译型
代表动物:地鼠
底层语言: C语言
简单概括:Go(又称Golang)是Google开发的一种静态强类型、编译型、并发 型,并具有垃圾回收功能的编程语言
注意事项:1.每行程序结束后不需要撰写分号(;)。
2.大括号({)不能够换行放置。
3.if判断式和for循环不需要以小括号包覆起来。
Go语言25个关键字: 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
二、安装及设置
安装地址
链接: https://golang.google.cn/dl.
安装步骤
傻瓜安装法(装完测试环境是否能用不能则配置环境变量,默认自动配置环境变量)
学习资料
Go语言官网(需要翻墙):https://golang.org/.
go中文社区:https://studygolang.com.
go中文在线文档: https://studygolang.com/pkgdoc.
三、第一个Go程序
package main
import "fmt"
func main() {
fmt.Println("Hello word")
}
四、变量
变量声明
单个声明
var s1 string
var s2 int
var s3 float32
s1 = "fsp"
s2 = 123
s3 = 3.14
批量声明
var s2,s3,s4,s5 string
var w2,w3,w4,w5 int
var q2,q3,q4,q5 float32
s2,s3,s4,s5 = "sfs","ggds","ads","dsfgs"
w2,w3,w4,w5 = 1,2,3,4
q2,q3,q4,q5 = 1.1,1.2,1.3,1.4
分组声明
var (
Name string
Age int
Sex string
hobby string
)
Name = "Hello word"
Age = 19
Sex = "男"
hobby = "篮球"
自动推导
m := "abcdefg"
w := bool
s := 123
匿名变量(特殊的变量名 ‘_’)
_,q,_e,_,w := 1,2,3,4,5
五、常量
关键词
const
特点
长来那个一旦定义就不能改变
常量定义
const Pi float64 = 3.14
const zero = 0.0 // 浮点常量, 自动推导类型
const ( // 常量组
size int64 = 1024
eof = -1 // 整型常量, 自动推导类型
)
const u, v float32 = 0, 3 // u = 0.0, v = 3.0,常量的多重赋值
const a, b, c = 3, 4, "foo"
// a = 3, b = 4, c = "foo" //err, 常量不能修改
iota 枚举
特点:在一个const声明语句中,在第一个声明的常量所在的行,iota将会被置为0,然后在每一个有常量声明的行加1
const (
x = iota // x == 0
y = iota // y == 1
z = iota // z == 2
w // 这里隐式地说w = iota,因此w == 3。其实上面y和z可同样不用"= iota"
)
const v = iota // 每遇到一个const关键字,iota就会重置,此时v == 0
const (
k = iota
h, i, j = iota, iota, iota //h=0,i=0,j=0 iota在同一行值相同
n = iota
)
const (
a = iota //a=0
b = "B"
c = iota //c=2
d, e, f = iota, iota, iota //d=3,e=3,f=3
g = iota //g = 4
)
const (
x1 = iota * 10 // x1 == 0
y1 = iota * 10 // y1 == 10
z1 = iota * 10 // z1 == 20
)
六、基础数据类型
布尔
var v1 bool
v1 = true
v2 := (1 == 2) // v2也会被推导为bool类型
整型
var v1 int32
v1 = 123
v2 := 64 // v1将会被自动推导为int类型
浮点型
var f1 float32
f1 = 12
f2 := 14.0 // 如果不加小数点, fvalue2会被推导为整型而不是浮点型,float64
字符串
字符
复数类型
七、 输入输出
格式化
Printf和Println的区别
Printf 是格式化输出 格式是自己定义的 可改变的 不会自动换行
Println 是普通的输出 会自动换行
输入
fmt.Scanf()
var v int
fmt.Println("请输入一个整型:")
fmt.Scanf("%d", &v)
//fmt.Scan(&v)
fmt.Println("v = ", v)
八、运算符
算数运算符
关系运算符
逻辑运算符
位运算符
赋值运算符
其他运算符
运算符优先级
九、流程控制
####选择结构
if switch 太简单就不写了
循环语句
Go语言只有for循环可代码一切循环
跳转语句
break==>结束本次循环 跳出循环
continue==>跳过某一个循环 接着循环下边的
go to 跳转
十、函数
定义格式
func FuncName(/*参数列表*/) (o1 type1, o2 type2/*返回类型*/) {
//函数体
return v1, v2 //返回多个值
}
函数定义说明:
func:函数由关键字 func 开始声明
FuncName:函数名称,根据约定,函数名首字母小写即为private,大写即为public
参数列表:函数可以有0个或多个参数,参数格式为:变量名 类型,如果有多个参数通过逗号分隔,不支持默认参数
返回类型:
① 上面返回值声明了两个变量名o1和o2(命名返回参数),这个不是必须,可以只有类型没有变量名
② 如果只有一个返回值且不声明返回值变量,那么你可以省略,包括返回值的括号
③ 如果没有返回值,那么就直接省略最后的返回信息
④ 如果有返回值, 那么必须在函数的内部添加return语句
自定义函数
无参无返回值
有参无返回值
无参有返回值
有参有返回值
递归函数
直接或间接调用本身
package main
import "fmt"
func main() {
//计算1--100的和为
fmt.Println(Test(100))
}
//递归函数
func Test(num int)int {
if num==1{
return 1 //出口
}else{
return num+Test(num-1) //调用自己
}
}
defer作用
先进后出
作用域
局部变量与全局变量的区别:全局都可以用,但是有就近原则