go 函数的作用域及可见性

1.全局变量,在程序整个生命周期有效

比如:


test.go 中 我们定义 了 a 作为全局变量,那么在这个程序中任何地方都可以调用a, 这个

var a int = 100

2. 局部变量,分为两种:1)函数内定义,2)语句块内定义。

func add(a int, b int) int {
  var sum int = 0 
  //sum是局部变量 函数内定义
  if a > 0 {
    var c int = 100
    //c是布局变量,尽在if语句块有效 语句块里面定义   } }

举例

package main

import (
    "fmt"
    "zhangyue/res/listen6/可见性"
)

func main() {
    sum := 可见性.Add(100, 200)
    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=100
var A = 200

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(100, 200)
    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)
}

 

转载于:https://www.cnblogs.com/ctztake/p/10279476.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值