变量作用域课后习题|学习笔记

简介: 快速学习变量作用域课后习题

开发者学堂课程【Go语言核心编程 - 基础语法、数组、切片、Map:变量作用域课后习题】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/625/detail/9613


变量作用域课后习题

内容介绍::

一、习题一

二、习题二

一、习题一

1、思考:下面的代码输出什么内容?

package main

import (

_ "encoding/json"

"fmt"

)

var name = "tom”

//全局变量

func test01() {

fmt.Println(name)

//tom tom

}

func test02()

{

//编译器采用就近原则

name := "jack"

fmt.Println(name)

//

jack

}

func main()  {

fmt.Println(name)

//

tom

test01() / /tom

test02()//jack

test01() //tom

}

2、输出结果为:

tom tom jack tom

3、代码分析:

先从 func main 看起,这里有个 main 函数,main 函数输出一个 name,但 name在函数内部没有定义,在外面定义了全局变量,这个变量的首字母是小写的,所以在本包都是可以被使用的。fmt.Println(name) 会输出 tom,又调用了 test01,test01是一个函数又用到了 name,这个 name 在本函数是没有定义的。会直接使用外面的全局变量,fmt.Println(name)也输出 tom,在 test02里定义了一个name,局部变量有个 name,全局变量也有个 name 不会报错,因为在局部变量和全局变量相同时编译器会采用一个就近原则。以 name := "jack"为准,fmt.Println(name) 会输出jack。紧接着又输出 test01,test01又重新回调一次,又会再次输出 tom。

如果把 name:=“jack”中“:”去掉了,代码不会报错,但是输出内容会改变。没有:相当于把jack重新赋给全局变量,这时候 name 与全局变量是同一个,当调用完 test01再输出的时候,也会输出jack,输出的结果为:ton,tom,jack,jack。


二、习题二

1、思考:下面的代码输出什么内容?

var Age int = 20

//

ok

Name := "tom"

//

var Name string Name = "tom"

func main() {

fmt.Println("name",Name)

}

2、输出报错  

var Name string Name = "tom"错误的原因是Name :=”tom”等价var Name string Name = "tom"赋值语句不能在函数体外,所以报错。

3、代码分析:

var Age int = 20是没有错误的,但是 Name := "tom"这句话是有错误,前面一句是在定义的时候就同时赋了值,但 Name := "tom"这句话等价于两句话,编译器会报错等价于 var Name string  Name = "tom",因为定义是在函数外定义的,不可以有赋值语句, Name = "tom"是执行语句,需要在函数体内才能进行,所以Name := "tom会报错。会显示 syntax error: non-declaration statement outside function body 就是这里面有一个不能放在函数体外的语句。

相关文章
|
8月前
|
C语言
c语言编程练习题:7-14 然后是几点
有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。
176 0
|
8月前
|
C语言
c语言编程练习题: 7-1 重要的话说三遍
这道超级简单的题目没有任何输入。 你只需要把这句很重要的话 —— “I'm gonna WIN!”——连续输出三遍就可以了。 注意每遍占一行,除了每行的回车不能有任何多余字符。 代码长度限制16 KB时间限制400 ms内存限制64 MB
144 0
|
7月前
|
IDE 编译器 开发工具
详细解读C语言程序设计:现代方法(第2版)第二章全部习题答案
详细解读C语言程序设计:现代方法(第2版)第二章全部习题答案
49 0
|
8月前
|
C语言
第三章:顺序结构程序设计(练习题)
第三章:顺序结构程序设计(练习题)
108 0
[课后习题]C Primer Plus【第六版】编程练习 第二章习题参考答案
[课后习题]C Primer Plus【第六版】编程练习 第二章习题参考答案
|
存储 安全 程序员
回忆曾经学过的函数
函数的参数 形参指的是:在函数原型或定义及 catch 语句的参数列表中被声明的对象或指针、宏定义中的参数、模板定义中的类型参数等。 实参指的是:函数调用语句中以逗号分隔的参数列表中的表达式、宏调用语句中以逗号分隔的列表中一个或多个预处理标识符的序列、throw 语句的操作数、表达式的操作数、模板实例化时的实际类型参数等
|
机器学习/深度学习 存储 人工智能
C语言程序设计第五版谭浩强课后答案 第五章习题答案(3-17题)
C语言程序设计第五版谭浩强课后答案 第五章习题答案(3-17题)
|
C++
AcWing语法基础课笔记 第三章 C++中的循环结构
第三章 C++中的循环结构 学习编程语言语法是次要的,思维是主要的。如何把头脑中的想法变成简洁的代码,至关重要。 ——闫学灿
114 0

热门文章

最新文章

下一篇
开通oss服务