引言
Go语言(又称Golang)结合了编译语言的运行速度与脚本语言的开发速度,是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
Golang特性
环境变量之GOROOT、GOPATH、Path
- GOROOT: 指定了go sdk的安装目录
- GOPATH: Golang的工作目录
- Path: 指定了go sdk的bin目录
go run与go build
- go build可将.go文件编译成可执行文件,因为可执行文件打包了Golang的运行环境,所以文件变大了,且该可执行文件在没有Golang运行环境下任然可以运行,实际生产中一般使用go build编译成可执行文件。
- go run是一条编译运行一体化的执行语句,所以运行速度没有直接运行go build所编译的可执行文件速度快,且执行go run需要Golang的运行环境。
其他特性
- Golang与其他语言不一样,一行只能写一条语句,且不能超过80个字符
- 定义的变量或者import的包如果没有使用到,则代码编译不能通过
- 行注释为//,块注释为/* */,且块注释不能嵌套
- 运算符两边必须各加一个空格
- 前大括号 { 不能换行放置
- Golang每条语句的末尾可不用加分号;
- 内置gofmt可以格式化文档
- 高并发与协程能力
- 函数可以返回多个值
- 自动垃圾回收机制
- defer延迟处理机制
- 反射
Golang变量使用的三种方式
指定的变量类型,若不赋值,则使用默认值
- string: ""
- bool: false
- int int8 int16 int32(rune) int64: 0
- uint uint8(byte) uint16 uint32 uint64 uintptr: 0
- float32 float64: 0
- complex64 complex128: 0
Golang变量推导: 可根据变量的值自行判定变量的类型
package main
import "fmt"
func main() {
var num = 10.11
fmt.Println("num=", num)
// num= 10.11
}
复制代码
可省略var,但是注意 := 左边的变量不能是已经声明过的变量,否则编译不能通过
package main
import "fmt"
func main() {
name := "Tom"
// := 的 : 不能省略
// 等价于 var name string语句 加上 name = "tom"语句
fmt.Println("name=", name)
}
复制代码
END
一次性声明
package main
import "fmt"
// var n = 100
// var name = "jack"
var (
n = 100
name = "jack"
)
复制代码
多变量声明
package main
import "fmt"
func main() {
var n1, n2, n3 int
fmt.Println("n1=", n1, "n2=", n2, "n3=", n3)
// n1= 0 n2= 0 n3= 0
var n4, name, n5 = 100, "tom", 888
fmt.Println("n4=", n4, "name=", name, "n5=", n5)
// n4= 100 name= tom n5= 888
n6, sex, n7 := 111, "man", 777
fmt.Println("n6=", n6, "sex=", sex, "n7=", n7)
// n4= 100 name= tom n5= 888
}
复制代码
一个区域的数据值可以在同一类型范围内不断变化
package main
import "fmt"
func main() {
var i int = 10
i = 30
i = 50
fmt.Println("i=", i)
// 只能在函数main范围内变化 且只能为int
}
复制代码
变量在同一作用域不能重名
有疑问加站长微信联系(非本文作者)