企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 变量 Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。 声明变量的一般形式是使用 var 关键字,语法如下: ~~~ var identifier type ~~~ 可以一次声明多个变量: ~~~ var identifier1, identifier2 type ~~~ #### 实例1 ~~~ package main import "fmt" func main() { var a string = "Hello world" fmt.Println(a) var b, c int = 1, 2 fmt.Println(b, c) } ~~~ 执行结果: Hello world 1 2 ## 二、申明变量的方式 #### 第一种 ~~~ var v_name v_type v_name = value ~~~ #### 第二种 ~~~ var v_name = value ~~~ #### 第三种 ~~~ v_name := value ~~~ #### 多变量声明 ~~~ //类型相同多个变量, 非全局变量 var vname1, vname2, vname3 type vname1, vname2, vname3 = v1, v2, v3 var vname1, vname2, vname3 = v1, v2, v3 // 和 python 很像,不需要显示声明类型,自动推断 vname1, vname2, vname3 := v1, v2, v3 // 出现在 := 左侧的变量不应该是已经被声明过的,否则会导致编译错误 ~~~ ## 三、默认值 * 数值类型(包括complex64/128)为**0** * 布尔类型为**false** * 字符串为**""**(空字符串) * 以下几种类型为**nil**: ~~~ var a *int var a []int var a map[string] int var a chan int var a func(string) int var a error // error 是接口 ~~~ #### 默认值实例1 ~~~ package main import "fmt" func main() { // 声明一个变量并初始化 var a = "Hello" fmt.Println(a) // 没有初始化就为零值 var b int fmt.Println(b) // bool 零值为 false var c bool fmt.Println(c) } ~~~ 执行结果: Hello 0 false #### 实例2 ~~~ package main import "fmt" func main() { var i int var f float64 var b bool var s string fmt.Printf("%v %v %v %q\n", i, f, b, s) } ~~~ ## 四、值类型和引用类型 ~~~ package main import "fmt" func fun01(a int) { a = 2 fmt.Println("fun01中传入的值为:", a) } func fun02(a *int) { *a = 3 fmt.Println("fun02中传入的值为:", *a) } func main() { var a int = 1 fmt.Println("main中的值第一次打印:", a) fun01(a) fmt.Println("main中调用fun01后打印:", a) fun02(&a) fmt.Println("main中调用fun02后打印:", a) } ~~~ 打印结果: main中的值第一次打印: 1 fun01中传入的值为: 2 main中调用fun01后打印: 1 fun02中传入的值为: 3 main中调用fun02后打印: 3