探索Go语言的独特功能和变量操作技巧

发表时间: 2020-05-27 09:54

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 mainimport "fmt"func main() {	var num = 10.11	fmt.Println("num=", num)	// num= 10.11}

可省略var,但是注意 := 左边的变量不能是已经声明过的变量,否则编译不能通过

package mainimport "fmt"func main() {	name := "Tom"	// := 的 : 不能省略	// 等价于 var name string语句 加上 name = "tom"语句	fmt.Println("name=", name)}

END

一次性声明

package mainimport "fmt"// var n = 100// var name = "jack"var (	n = 100	name = "jack")

多变量声明

package mainimport "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 mainimport "fmt"func main() {	var i int = 10	i = 30	i = 50	fmt.Println("i=", i)	// 只能在函数main范围内变化 且只能为int}

变量在同一作用域不能重名