go 变量作用域
package _case
import "errors"
// SumCase 值传递
func SumCase(a, b int) (sum int, err error) {
if a <= 0 && b <= 0 {
err = errors.New("两数相加不能同时小于0")
return 0, err
}
sum = a + b
return sum, nil
}
// ReferenceCase 引用传递
func ReferenceCase(a int, b *int) {
a += 1
*b += 1
}
// 全局变量
var g int
var G int
// ScopeCase 变量作用域
func ScopeCase(a, b int) {
c := 100
g = a + b + c
G = g
}
package main
import (
"fmt"
_case "study/var-func/case"
)
// 形参
// 局部变量
// 全局变量
func main() {
a := 10
b := 10
// 值拷贝.不会影响 a,b
c, err := _case.SumCase(a, b)
if err != nil {
fmt.Println(err.Error())
}
fmt.Println(a, b)
fmt.Println(c)
// 引用传递.会改变 a,b
_case.ReferenceCase(a, &b)
fmt.Println(a, b)
fmt.Println("=====变量作用域=======")
sprintf := fmt.Sprintf("全局变量 G: %d", _case.G)
fmt.Println(sprintf)
_case.ScopeCase(a, b)
sprintf = fmt.Sprintf("全局变量 在方法里面累加 G: %d", _case.G)
fmt.Println(sprintf)
}
10 10
20
10 11
=====变量作用域=======
全局变量 G: 0
全局变量 在方法里面累加 G: 121
进程 已完成,退出代码为 0
go 变量作用域的更多相关文章
- javascript中的变量作用域以及变量提升
在javascript中, 理解变量的作用域以及变量提升是非常有必要的.这个看起来是否很简单,但其实并不是你想的那样,还要一些重要的细节你需要理解. 变量作用域 “一个变量的作用域表示这个变量存在的上 ...
- [转]深入理解JavaScript的变量作用域
1.JavaScript的作用域链 2.函数体内部,局部变量的优先级比同名的全局变量高. 3.JavaScript没有块级作用域. 4.函数中声明的变量在整个函数中都有定义. 5.未使用var关键字定 ...
- Java基础知识笔记(七:接口、变量作用域和参数传递)
一.接口 Java语言不允许一个子类拥有多个直接父类,即任何子类只能有一个直接父类.但允许一个类实现多个接口,即在定义类的接口名称列表中可以包含1个或多个接口名称,从而实现多重继承的特性.接口的定义格 ...
- PHP常量、变量作用域详解(一)
PHP 中的每个变量都有一个针对它的作用域,它是指可以在其中访问变量(从而访问它的值)的一个领域.对于初学者来说,变量的作用域是它们所驻留的页面.因此, 如果你定义了 $var,页面余下部分就可以访问 ...
- PHP变量作用域详解(二)
学过C的人用PHP的时候一般会相当顺手,而且感到PHP太方便太轻松.但在变量作用域这方面却与C有不同的地方,搞不好会相当郁闷,就找不到错误所在.昨晚就与到这么一个问题,是全局变量在函数中的问题.今天搜 ...
- JavaScript函数定义和调用 变量作用域
本文是笔者在看廖雪峰老师JavaScript教程时的个人总结 JavaScript中函数定义可以是这样的格式 function 函数名(参数) { 函数体 } 也可以是这样的格式 ...
- JavaScript 变量作用域
一. 变量声明 变量用var关键字来声明,如下所示: 变量在未声明的情况下被初始化,会被添加到全局环境. JavaScript执行代码时,会创建一个上下文执行环境,全局环境是最外围的环境.每个函数在被 ...
- 变量作用域&函数作用域
一. 变量作用域 1)全局变量 在全局环境下声明的变量被视为全局变量. 在没有使用var进行声明的时候,变量就被定义为全局变量.在ES5的严格模式下,如果变量没有使用var来声明是会报错的. 2)局部 ...
- OC点语法和变量作用域
OC点语法和变量作用域 一.点语法 (一)认识点语法 声明一个Person类: #import <Foundation/Foundation.h> @interface Person : ...
- python的变量作用域问题
偶然掉进了一个坑里.仔细分析了下原因.原来是变量作用域的问题.简单抽象如下: id=1 #许多行代码 [id for id in range(10)] #许多行代码 if id!=1: #做一些事情 ...
随机推荐
- FastGithub 使用遇到问题
火狐浏览器 https://blog.csdn.net/weixin_33847182/article/details/86129219 因 HTTP 严格传输安全(HSTS)机制无法打开网页 1.打 ...
- C# HttpWebRequest 请求返回 The remote server returned an error: (400) Bad Request.
可以看下他的响应Body catch (WebException ex) { if (ex.Status == WebExceptionStatus ...
- Vlookup实现多条件匹配
方法一:使用辅助列 只要在目标区域的首列添加一个辅助列,目的就是将多条件转化为一个单条件,这个时候我们就可以用Vlookup进行匹配了,请看下面的示例: 1.在A列前插入一空列,输入公式=B2& ...
- 如何更好地发布 TypeScript npm 包
当发布 TypeScript 编写的 npm 包时,应该遵循一些最佳实践来确保包的可用性和可维护性.以下是推荐的项目结构和发布流程: 推荐的项目结构 my-package/ ├── src/ # Ty ...
- vue被部署到子(二级)目录
需求有的时候,你的域名很珍贵,除了二级域名外.你还可以将你的项目部署在服务器二级目录下,这样的话,就可以部署多个项目了.比如说,我有一个域名为dshvv.com的服务器,我想部署两个项目:12306项 ...
- 前端开发系列009-基础篇之JavaScript内置Math
本文介绍JavaScript中的内置对象Math,以及Math的常用方法. 一.Math简单介绍 ECMAScript为我们提供了一个专门处理数学计算的内置对象--Math对象.Math对象提供了很多 ...
- 快速傅里叶变换(FFT) 笔记
2.upd.2025.7.10 oi.polo.fft 快速傅里叶变换(Fast Fourier Transform) FFT三问: 1.什么是FFT 一个快速处理卷积的算法 2.什么是卷积 就是多项 ...
- 借助ETLCloud工具,轻松同步Doris数据至Inceptor数据库
一.背景 在现代企业中,数据是决策和运营的核心.为了更好地利用这些数据,企业通常需要将数据从不同的源系统(如Doris)同步到一个集中的数据仓库(如Inceptor).ETL(Extract, Tra ...
- POLIR-Organizations-Management-Connections: Standpoint+Traits+Mood+Reason+Solution 立场+性格特点+心情+成因+解决
实事求是明确立场+自知之明多交良师益友 Trait English reason Solutions Irritable ← because of my incompetence. 多交良师益友, 多 ...
- Redis是什么? --九五小庞
引言 在Web应用发展的初期,那时关系型数据库受到了较为广泛的关注和应用,原因是因为那时候Web站点基本上访问和并发不高.交互也较少.而在后来,随着访问量的提升,使用关系型数据库的Web站点多多少少都 ...