go 函数的作用域及可见性
1.全局变量,在程序整个生命周期有效
比如:
test.go 中 我们定义 了 a 作为全局变量,那么在这个程序中任何地方都可以调用a, 这个
var a int =
2. 局部变量,分为两种:1)函数内定义,2)语句块内定义。
func add(a int, b int) int {
var sum int =
//sum是局部变量 函数内定义
if a > {
var c int = 100
//c是布局变量,尽在if语句块有效 语句块里面定义
}
}
举例
package main import (
"fmt"
"zhangyue/res/listen6/可见性"
) func main() {
sum := 可见性.Add(, )
fmt.Printf("cacl Add return %d\n", sum) // sub := 可见性.sub(200,100) // 报错 说明 小写是私有的 只能在包内使用 不能在保外使用
// fmt.Printf("cacl sub return %d\n", sub) fmt.Printf(" cacl A is %d \n", 可见性.A)
// fmt.Printf(" cacl a is %d \n", 可见性.a) // 报错 // 如果想得到小a 可用下面这种方法
a := 可见性.Test()
fmt.Printf(" cacl a is %d \n", a)
}
可见性
可见性,包内任何变量或函数都是能访问的。包外的话,首字母大写是可导出的,能够被其他包访问或者调用,小写表示是私有的,不能被外部包访问或调用
func add(a int, b int) int {
}
//add这个函数只能在包内部调⽤,是私有的,不能被外部的包调⽤
举例
代码 结构

可见性/cacl.go
package 可见性
// 大写能被外部的包引用 小写 说明是私有的 只能在本包里面被调用 (本包里面的所有.go都可调用) var a=
var A = func Add(a, b int) int {
return a+b
} func sub(a, b int) int {
return a - b
}
可见性/test.go
package 可见性
func Test() int {
return a
}
可见性测试/test.go
package main import (
"fmt"
"zhangyue/res/listen6/可见性"
) func main() {
sum := 可见性.Add(, )
fmt.Printf("cacl Add return %d\n", sum) // sub := 可见性.sub(200,100) // 报错 说明 小写是私有的 只能在包内使用 不能在保外使用
// fmt.Printf("cacl sub return %d\n", sub) fmt.Printf(" cacl A is %d \n", 可见性.A)
// fmt.Printf(" cacl a is %d \n", 可见性.a) // 报错 // 如果想得到小a 可用下面这种方法
a := 可见性.Test()
fmt.Printf(" cacl a is %d \n", a)
}
go 函数的作用域及可见性的更多相关文章
- C/C++:作用域、可见性与生存期
作用域 作用域是用来表示某个标识符在什么范围内有效. C++的作用域主要有四种:函数原型作用域.块作用域.类作用域和文件作用域. 由大到小:文件作用域>类作用域>块作用域>函数原型作 ...
- (C/C++学习笔记) 三. 作用域和可见性
三. 作用域和可见性 ● 标识符的作用域 标识符的作用域是标识符在程序源代码中的有效范围,从小到大分为函数原型作用域.块作用域(局部作用域),文件作用域(全局作用域). 1. 函数原型作用域 函数原型 ...
- C++标识符的作用域与可见性
一.标识符的作用域与可见性 作用域讨论的是标识符的有效范围,可见性讨论的是标识符是否可以被引用. 二.作用域 作用域是一个标识符在程序正文中有效的区域.C++中标识符的作用域有函数原型作用域.局部作用 ...
- C++的标识符的作用域与可见性
下面是关于C++的标识符的作用域与可见性学习记录,仅供参考 标识符的作用域与可见性 作用域是一个标识符在程序正文中有效的区域. 作用域分类 ①函数原型作用域 ②局部作用域(快作用域) ③类作用域 ④文 ...
- JavaScript基础学习-函数及作用域
函数和作用域是JavaScript的重要组成部分,我们在使用JavaScript编写程序的过程中经常要用到这两部分内容,作为初学者,我经常有困惑,借助写此博文来巩固下之前学习的内容. (一)JavaS ...
- JavaScript变量的作用域和函数的作用域的区别
变量作用域和函数作用域都涉及到变量值的变化,本文旨在让大家明白他们之间的区别 变量的作用域: 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接 ...
- 【C语言入门教程】5.2 函数的作用域规则(auto, static)
作用域规则是指代码或数据的有效使用范围.C语言将函数作为独立的代码块,函数之间不能相互访问其内部的代码或数据.函数间数据的传递只能通过接口实现.但是,变量的定义方法可改变函数的作用域规则,可将变量分为 ...
- [译]JavaScript:函数的作用域链
原文:http://blogs.msdn.com/b/jscript/archive/2007/07/26/scope-chain-of-jscript-functions.aspx 在JavaScr ...
- 函数变量作用域(python)
收集参数:该参数个数不确定 >>> def test(*params): print('参数的长度是:', len(params)); print('第二个参数是:', params ...
随机推荐
- 多进程编程之守护进程Daemonize
1.守护进程 守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务.很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭.另一些只在需要的时候才启动,完成任务后就自动结束. ...
- 【BZOJ4869】【SHOI2017】相逢是问候
Description BZOJ传送门 Solution 这题涉及到指数嵌套堆叠,可能可以用欧拉函数解决. 试想一个数\(a_i\)经过\(k\)次操作后会变成什么? \[ k个c\;\; \begi ...
- 解题:TJOI 2015 组合数学
题面 通过这个题理解了一下反链的概念,更新在图论知识点里了 每个点向右和下连边可以建出一张图,这个题事实上是让我们求图的最小链覆盖.Dilworth定理告诉我们,最小链覆盖等于最长反链(反链:DAG中 ...
- 解题:SCOI 2010 序列操作
题面 线段树......模板题(雾? 然而两种标记会互相影响,必须保证每次只放一个(不然就不知道怎么放了),具体的影响就是: 翻转标记会使得覆盖标记一起翻转,下放的时候就是各种swap 覆盖标记会抹掉 ...
- 题解【bzoj2733 [HNOI2012]永无乡】
Descriprition 两种操作 把两个集合并起来 求一个集合中的第 \(k\) 大(的编号) \(n \leq 10^5\) Solution 平衡树的板子题之一 维护两个点连不连通直接并查集 ...
- 编译geth报错的解决方法 make: *** [geth] 错误 1
在centos下安装了go1.9.1版本,编译go-ethereum时报错: [root@localhost go-ethereum]# make gethbuild/env.sh go run bu ...
- label和fieldset标签
一.label标签 作用:可以通过for属性关联input标签的 id 属性,这样可以实现在点击label标签的内容时,可以使input文本框中获取输入的光标. <body> <la ...
- ElasticStack系列之十五 & query cache 引起性能问题思考
问题描述 一个线上集群,执行的 Query DSL 都是一样的,只是参数不同.统计数据显示 98% ~ 99% 的查询相应速度都很快,只需要 4 ~ 6ms,但是有 1% 左右的查询响应时间在 100 ...
- python---基础知识回顾(六)网络编程
python---基础知识回顾(十)进程和线程(进程) python---基础知识回顾(十)进程和线程(多线程) python---基础知识回顾(十)进程和线程(自定义线程池) 一:Socket (一 ...
- mongodb3.6集群搭建:分片集群认证
上篇集群已经创建,现在加入认证. 1. 生成密钥文件每个服务器上创建路径: mkdir -p /var/lib/mongo/auth 生成64字节的密钥文件openssl rand -base64 6 ...