Golang特性以及变量的使用方式
2014 年 4 月 29 日
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 } 复制代码
变量在同一作用域不能重名
欢迎关注我们的微信公众号,每天学习Go知识