产自:谷歌
类型:编译型
代表动物:地鼠
底层语言: 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.
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, 常量不能修改
特点:在一个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 是普通的输出 会自动换行
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) //调用自己
}
}
先进后出
局部变量与全局变量的区别:全局都可以用,但是有就近原则