go-变量

148 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第16天,点击查看活动详情

Go语言中的程序实体包括变量、常量、函数、结构体和接口。

变量

声明变量

var用于声明一个变量列表,跟函数的参数列表一样,类型在最后。

package main

import "fmt"

var c, python, java bool

func main() {
   var i int
   fmt.Println(i, c, python, java)
}

短变量声明

在函数中,简洁赋值语句 := 可在类型明确的地方代替var声明。函数外的每个语句都必须以关键字开始(var,func等等),因此:=结构不能在函数外使用。

package main

import "fmt"

func main() {
   var i, j int = 1, 2
   k := 3
   c, python, java := true, false, "no!"
   fmt.Println(i, j, k, c, python, java)
}

初始化

变量声明可以包含初始值,每个变量对应一个。如果初始化值已经存在,则可以省略类型;变量会从初始值中获得类型。

package main

import "fmt"

var i, j int = 1, 2

func main() {
   var c, python, java = true, false, "no!"
   fmt.Println(i, j, c, python, java)
}

判断变量类型

package main

import "fmt"

var container = []string{"zero", "one", "two"}

func main() {
   container := map[int]string{1: "zero", 0: "one", 2: "two"}
   fmt.Printf("The element is %q.\n", container[1])
   value, ok := interface{}(container).([]string)
   fmt.Println(value, ok)
}

ok是是布尔(bool)类型的,它将代表类型判断的结果,true或false。value代表类型转换后的值(转换失败就是空)。

常量

常量的声明与变量类似,只不过是使用const关键字。常量可以是字符、字符串、布尔值或数值。常量不能用 := 语法声明。

package main

import "fmt"

const Pi = 3.14

func main() {
   const World = "世界"
   fmt.Println("Hello", World)
   fmt.Println("Happy", Pi, "Day")
   const Truth = true
   fmt.Println("Go rules?", Truth)
}

数值常量

数值常量是高精度的 

一个未指定类型的常量由上下文来决定其类型。

package main

import "fmt"

const (
   Big   = 1 << 100
   Small = Big >> 99
)

func needInt(x int) int {
   return x*10 + 1
}

func needFloat(x float64) float64 {
   return x * 0.1
}

func main() {
   fmt.Println(needInt(Small))
   fmt.Println(needFloat(Small))
   fmt.Println(needFloat(Big))
}