Golang 局部变量、全局变量 声明

一、局部变量

四种声明方式 + 多变量声明:

package main

import "fmt"

//局部变量声明
func main() {
	//方法一: 声明一个变量和数据类型,不初始化值;默认值为0;
	var lvA int
	fmt.Println("lvA = ", lvA)

	//方法二: 声明一个变量和数据类型,并且初始化值。
	var lvB int = 10
	fmt.Println("lvB = ", lvB)

	//方法三: 声明一个变量,不指定数据类型,但是初始化值;Golang 会自动推断设置这个变量的数据类型;
	var lvC = 20
	fmt.Println("lvC = ", lvC)

	//方法四: 省略 var 关键字, 省略类型指定,使用 := 直接声明变量和初始化值。(常用方法) (但不支持这样声明全局变量)
	lvD := 30
	fmt.Println("lvD = ", lvD)

	//多变量声明 方式一: 单行写法

	//可以先一次声明多个,然后再一次单个或多个赋值
	var lvE, lvF, lvG int
	lvE = 10
	lvF, lvG = 20, 30

	fmt.Println("lvE = ", lvE, " lvF = ", lvF, " lvG = ", lvG)

	//可以在声明多个变量的同时,初始化值
	var lvH, lvI, lvJ int = 40, 50, 60
	fmt.Println("lvH = ", lvH, " lvI = ", lvI, " lvJ = ", lvJ)

	//可以同时声明多个不同类型的变量,根据初始化值,自动推断类型
	var lvL, lvM, lvN = 70, 80, "多变量声明时,也可以自动类型推断时"
	fmt.Println("lvL = ", lvL, " lvM = ", lvM, " lvN = ", lvN)

	//多变量声明 方式二:多行写法
	var (
		//可以声明类型, 并初始化值 (多行时,必须要初始化值)
		lvO      int = 10
		lvP          = 20
		lvQ, lvR     = 30, "字符串lvR"
		//也可以这样只声明但是不初始化值
		//不过如果不初始化值,则必须指定类型,不然不知道这个变量的类型
		lvS int
	)
	lvS = 40
	fmt.Println("lvO = ", lvO, " lvP = ", lvP, " lvQ = ", lvQ, " lvR = ", lvR, " lvS = ", lvS)
}

image.png

二、全局变量

全局变量的声明和局部变量的声明方式一、二、三 相同;

但是不能使用局部变量声明方式四 (:=) 来声明全局变量。

package main

import "fmt"

//全局变量声明:和局部变量声明方法的一二三相同
var gvA int
var gvB int = 10
var gvC = 20

//不能使用 := 来声明全局变量,编译会报错
// gvD := 30

//全局变量的多个变量声明和局部变量一样
var gvL, gvM, gvN = 70, 80, "多变量声明时,也可以自动类型推断时"

var (
	//可以声明类型, 并初始化值 (多行时,必须要初始化值)
	gvO      int = 10
	gvP          = 20
	gvQ, gvR     = 30, "字符串gvR"
	//也可以这样只声明但是不初始化值
	//不过如果不初始化值,则必须指定类型,不然不知道这个变量的类型
	gvS int
)

func main() {

	fmt.Println("gvA = ", gvA)

	fmt.Println("gvB = ", gvB)

	fmt.Println("gvC = ", gvC)

	fmt.Println("gvL = ", gvL, " gvM = ", gvM, " gvN = ", gvN)

	gvS = 40
	fmt.Println("gvO = ", gvO, " gvP = ", gvP, " gvQ = ", gvQ, " gvR = ", gvR, " gvS = ", gvS)

}

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Go语言中,全局变量的作用域是整个,其他无法直接引用main中定义的全局变量。为了解决这个问题,可以采用以下两种方法: 1. 定义并编写单独的全局变量:创建一个独立的,用于存放全局变量。在该中定义全局变量,并在其他中引入该来使用全局变量。 ```go package global var Gvar int ``` 在其他中引入并使用该全局变量: ```go package test import ( "fmt" "app/global" ) func test() { var err error global.Gvar = 2 fmt.Println(global.Gvar) } ``` ```go package main import ( "fmt" "app/global" ) var Gvar int func main() { var err error global.Gvar = 1 fmt.Println(global.Gvar) } ``` 2. 局部变量全局变量同名:在Go语言中,全局变量局部变量名称可以相同,但是函数内的局部变量会被优先考虑。 ```go package main import "fmt" var quanju = 10 // 全局变量 func main() { var quanju = 100 // 局部变量 fmt.Println("quanju=", quanju) // 输出局部变量的值 } ``` 总结:在Go语言中,全局变量的作用域是整个,其他无法直接引用main中定义的全局变量。可以通过定义单独的全局变量或使用同名的局部变量来解决这个问题。 #### 引用[.reference_title] - *1* [golang关于全局变量的使用和理解](https://blog.csdn.net/itopit/article/details/127469006)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Golang开发--全局变量/局部变量](https://blog.csdn.net/liulanba/article/details/115769826)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值