go语言 全局变量和局部变量实例

一、局部变量

1 定义在{}里面的变量时局部变量,只能在{}里面有效

2 执行到定义的那句话,开始分配内存空间,离开作用域自动进行释放

3 作用域,就是变量作用的范围

package main
import "fmt"
func test() {
 i := 111
 fmt.Println("i=", i)
}

func main() {
 test()
 {
 i := 10
 fmt.Printf("i=%v\n", i)
 }
 // i=12 错误

 if flag := 3; flag == 3 {
 fmt.Println("flag=", flag)
 }
 //fmt.Println("flag=", flag) 错误
}

二、全局变量

1 定义在函数外部的变量称为全局变量

2 全局变量在任何地方都可以进行使用

package main
import "fmt"
func test() {
 fmt.Println("a= ", a)
}

var a int
func main() {
 a = 12
 fmt.Println("a= ", a)
 test()
}

三、不同作用域中,同名变量

1 不同的作用域,允许定义同名的变量

2 使用变量的原则,就近原则,如果局部变量没有,就去全局变量中找

package main
import "fmt"

//定义一个全局变量
var a byte
func main() {
 var a int
 fmt.Printf("1: a type is %T\n", a) //int

 {
 var a float32
 fmt.Printf("2: a type is %T\n", a) // float32
 }

 test()
}

func test() {
 fmt.Printf("3: a type is %T\n", a) //uint8
}

补充:golang全局变量的坑-尽量别用全局变量

看图片吧~

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • 浅谈golang并发操作变量安全的问题

    我就废话不多说了,大家还是直接看代码吧~ package main import ( "fmt" "time" "sync" "sync/atomic" ) func main() { test1() test2() } func test1() { var wg sync.WaitGroup count := 0 t := time.Now() for i := 0 ; i < 50000 ; i++ { wg.Add

  • go语言的初始化顺序,包,变量,init详解

    依次见例子代码: p1.go package p1 import "fmt" //1.1 var x float32 = 1.2 //1.2 func init() { //1.3 fmt.Printf("p1 package, x:%f\n", x) //1.4 } func Donothing() { fmt.Println("do nothing.\n") } a.go: package main import "fmt"

  • go语言的工作空间和GOPATH环境变量介绍

    go语言并没有强制一定要使用一定的工作空间和项目结构,对于小型的go程序依靠go run等命令就可以直接编译运行. 然而,保持良好的工作空间和文件结构,对于管理源代码和发布程序都是非常有帮助的. 对于大型的go语言项目,工作空间则是一定要的. 1.go语言的工作空间结构 go语言的工作空间其实就是一个文件目录,目录中必须包含src.pkg.bin三个目录. 其中src目录用于存放go源代码,pkg目录用于package对象,bin目录用于存放可执行对象. 使用go的编译命令工具可以将源代码或pa

  • Golang 变量申明的三种方式

    Golang 申明变量主要有三种方式:  一是使用 var 关键字,申明包级或函数级变量:  二是使用短变量申明方式,只能申明函数级变量,且需指明变量值:  三是使用 const 关键字,申明包级或函数级常量. 1.var var 可以申明包级变量,短变量申明方式不可以,这是二者最大的区别. var name T // name默认为类型T的零值 var name T = value // 赋初始值时指明类型 var name = value // 根据值推断变量类型 var name0, na

  • Golang常用环境变量说明与设置详解

    无论你是使用Windows,Linux还是Mac OS操作系统来开发Go应用程序,在安装好Go安装语言开发工具之后,都必须配置好Go语言开发所要求的 环境变量,才算初步完成Go开发环境的搭建. 但对于一些初学者来说,可能不太明白Go语言中常用的环境变量(Environment variables)的作用以及如何设置环境变量,今天我们来讲讲. 注意:Go提供的Windows操作系统安装包(.msi后缀)安装完成后,会自动配置几个常用的环境变量. 常用环境变量 Go语言中可以设置的环境变量有很多,每

  • Go语言变量创建的五种方法

    对于只有 Python 语言经验的朋友,也许会不太理解声明这个词,在 Python 中直接拿来就用,也不用声明类型啥的. Go 语言是静态类型语言,由于编译时,编译器会检查变量的类型,所以要求所有的变量都要有明确的类型. 变量在使用前,需要先声明.声明类型,就约定了你这个变量只能赋该类型的值. 声明一般有以下四种方法,其中前面两种同样也可用于定义常量,只需把关键字 var 变成 const 即可. 第一种:一行声明一个变量 var <name> <type> 其中 var 是关键字

  • go语言 全局变量和局部变量实例

    一.局部变量 1 定义在{}里面的变量时局部变量,只能在{}里面有效 2 执行到定义的那句话,开始分配内存空间,离开作用域自动进行释放 3 作用域,就是变量作用的范围 package main import "fmt" func test() { i := 111 fmt.Println("i=", i) } func main() { test() { i := 10 fmt.Printf("i=%v\n", i) } // i=12 错误 i

  • C语言 全局变量和局部变量详解及实例

    C语言 全局变量和局部变量详解 核心内容: 1.局部变量和全局变量 变量按照作用域分为:全局变量和局部变量 全局变量的作用域:从定义位置开始到下面整个程序结束. 局部变量的作用域:在一个函数内部定义的变量只能在本函数内部进行使用. OK,上面的效果用Java语言实现一下: public class App1 { public static int k = 10;//相当于全局变量 public static void main(String[] args) { int i = 10;//局部变量

  • c语言全局变量和局部变量问题及解决汇总

    1.局部变量能否和全局变量重名? 答:能,局部会屏蔽全局.要用全局变量,需要使用"::" 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量.对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内. 2.如何引用一个已经定义过的全局变量? 答:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全

  • C语言基础全局变量与局部变量教程详解

    目录 一:局部变量与全局变量 1.1:局部变量 1.2:全局变量 1.3:代码解释 1.4:const修饰的变量的修改 二:静态局部变量与静态全局变量 2.1:static关键字 2.2:静态局部变量 2.3:静态全局变量 2.4:汇总 三:全局函数与静态函数 3.1:全局函数 3.2:静态函数 3.3:汇总表 一:局部变量与全局变量 1.1:局部变量 局部变量:在函数内部定义的变量 ,auto可加可不加 作用域:从定义到本函数结束 生命周期:从定义到该函数结束 1.2:全局变量 全局变量:在函

  • C++中 静态局部变量实例详解

     C++中 静态局部变量实例详解 以前经常使用和了解static作用在全局变量前,以至于甚至把static当做全局变量的代名词,但是其实static还可以作用于局部变量前 静态局部变量的意义: 1.分配空间在全局数据栈上 2.作用域只局限于当前的函数范围内(局部) 3.生命周期为整个程序,不会随着当前的函数结束而结束 4.首次初始化时赋值生效,以后的初始化赋值自动跳过 如 void fn() { static n=10; cout<<n<<endl; n++; } 这里的n是一个静

  • Python全局变量与局部变量区别及用法分析

    本文实例讲述了Python全局变量与局部变量区别及用法.分享给大家供大家参考,具体如下: 对于很多初学的同学,对全局和局部变量容易混淆,看看下面给大家的讲解相信都应该明白两者的区别了. 定义: 全局变量:在模块内.在所有函数的外面.在class外面 局部变量:在函数内.在class的方法内 下面来看看例子 一.函数内部调用全局变量 a="hello" #全局变量a def test(): global a#调用全局变量a b =a #test方法里之后再调用a时,都是全局的a prin

  • Javascript学习之谈谈JS的全局变量跟局部变量(推荐)

    今天公司一个实习小妹子问我两段JS代码的区别: 代码一: <script type="text/javascript"> var a = "Hello"; function test(){ var a; alert(a); a = "World"; alert(a); } </script> 代码二: <script type="text/javascript"> var a = "

  • JS全局变量和局部变量最新解析

    就是这种盲目无原理依据的研究测试弄晕了我, 有必要这么做吗? 其实理解了原理就没必要搞这么多一个一个的试, 然后得出规律, ECMAScript规则都已经定义好了. var的规则是: 使用var声明变量就是内部变量, 否则就是先调用全局变量, 不管多少层函数. this的规则是: method函数里的this永远指向自身, 普通函数的this永远指向DOMWindow. // GodDamnTest1 function Foo() { var a = 123; // 局部变量, 所有子函数的全局

  • 浅谈JavaScript的全局变量与局部变量

    一.JavaScript scope 的划分标准是function函数块,不是以 if.while.for来划分的 <script> function f1(){ alert("before for scope:"+i); //i未赋值(并不是没有声明!使用未声明变量或函数会导致致命错误从而中断脚本执行) //此时i值为undefined for(var i=0; i<3;i++){ alert("in for scope:"+i);} //i的值

  • C语言指针应用简单实例

    C语言指针应用简单实例 这次来说交换函数的实现: 1. #include <stdio.h> #include <stdlib.h> void swap(int x, int y) { int temp; temp = x; x = y; y = temp; } int main() { int a = 10, b = 20; printf("交换前:\n a = %d, b = %d\n", a, b); swap(a, b); printf("交换

随机推荐