go基本介绍
# 安装go
选择所需版本,windows下载msi安装包
选择自定义的安装路径
# hello world
package main //包声明,指明这个文件属于哪个包
import "fmt" //引入包,其实就是告诉Go 编译器这个程序需要使用的包
func main() { //
// 终端输出hello world
fmt.Println("Hello world!")
}
1
2
3
4
5
6
2
3
4
5
6
# 变量类型
格式:var var_name 类型
变量:Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。
数据类型的出现是为了把数据分成所需内存大小不同的数据:
类型 | 详解 |
---|---|
boolean | 布尔型的值只可以是常量 true 或者 false。 |
int,float | Go 语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。 |
string | 由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。 |
派生类型 | (a) 指针类型(Pointer)(b) 数组类型© 结构化类型(struct)(d) Channel 类型(e) 函数类型(f) 切片类型(g) 接口类型(interface)(h) Map 类型 |
# 变量和声明
# 定义和赋值分开
先说最复杂的
package main
import (
"fmt"
)
func main() {
var power int //定义了一个int类型的变量power,并自动分配默认值即 0
power = 9000
fmt.Printf("It's over %d\n", power)
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 定义和赋值合并
var power int = 9000
1
# 最简单的写法
提示
对于局部变量 Go会自动推断变量的类型
power := 9000
1
警告
不能用于全局变量
而且同一个变量,在相同作用域下,不能被声明两次
否则会报错 := 左侧不是新的变量
# 最简写法结合函数
函数的返回结果赋值给变量
func main() {
power := getPower()
}
func getPower() int {
return 9001
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# 多个变量同时赋值
func main() {
name, power := "Goku", 9000
fmt.Printf("%s's power is over %d\n", name, power)
}
1
2
3
4
2
3
4
提示
多个变量赋值的时候,只要其中有一个变量是新的,就可以使用:=
比如下面的name是新变量,就可以用:=
func main() {
power := 1000
fmt.Printf("default power is %d\n", power)
name, power := "Goku", 9000
fmt.Printf("%s's power is over %d\n", name, power)
}
1
2
3
4
5
6
7
2
3
4
5
6
7
警告
在Go中,不允许你在程序中拥有未使用的变量和包,比如下面代码编译会不通过
func main() {
name, power := "Goku", 1000
fmt.Printf("default power is %d\n", power)
}
1
2
3
4
2
3
4
# 变量总结
- 初始化一个变量时,用:
var NAME TYPE
- 给变量声明及赋值时,用:
NAME := VALUE
- 给之前已经声明过的变量赋值时,用:
NAME = VALUE
# if
if name == "Leto" {
print("the spice must flow")
}
if (name == "Goku" && power > 9000) || (name == "gohan" && power < 4000) {
print("super Saiyan")
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# 导入包
import{
"fmt"
"os"
}
1
2
3
4
2
3
4
警告
导入包之后,不使用就会报错
# 运行go代码
go run hello.go
1
go run
命令已经包含了编译和运行。
它使用一个临时目录来构建程序,执行完然后清理掉临时目录。你可以执行以下命令来查看临时文件的位置:
go run --work hello.go
1
- 编译代码
go build hello.go
1
# 函数声明
# 返回值个数
- 没有返回值
- 一个返回值
- 两个返回值
func log(message string) {
}
func add(a int, b int) int {
}
func power(name string) (int, bool) {
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 参数接收
# 两个参数都接收
func power(name string) (int, bool) {
value, exists := power("goku")
if exists == false {
// 处理错误情况
}
}
1
2
3
4
5
6
2
3
4
5
6
# 只接收其中一个参数
func power(name string) (int, bool) {
_, exists := power("goku")
if exists == false {
// 处理错误情况
}
}
1
2
3
4
5
6
2
3
4
5
6
编辑 (opens new window)