Golang特性以及变量的使用方式

1,119 阅读2分钟

引言

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
}

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