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

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

开发者学堂课程【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 就是这里面有一个不能放在函数体外的语句。

相关文章
|
6月前
|
C语言
c语言编程练习题:7-36 韩信点兵
c语言编程练习题:7-36 韩信点兵
67 0
|
6月前
|
C语言
c语言编程练习题:7-40 到底是不是太胖了
c语言编程练习题:7-40 到底是不是太胖了
136 0
|
6月前
|
C语言
c语言编程练习题:7-17 成绩转换
本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:
96 0
|
6月前
|
C语言
c语言编程练习题:7-8 是不是太胖了
据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。已知市斤的数值是公斤数值的两倍。现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……)
131 0
|
6月前
|
C语言
c语言编程练习题: 7-1 重要的话说三遍
这道超级简单的题目没有任何输入。 你只需要把这句很重要的话 —— “I'm gonna WIN!”——连续输出三遍就可以了。 注意每遍占一行,除了每行的回车不能有任何多余字符。 代码长度限制16 KB时间限制400 ms内存限制64 MB
127 0
|
6月前
|
C语言
c语言编程练习题:7-20 简单计算器
模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。
190 0
|
6月前
|
C语言
c语言编程练习题:7-60 Welcome to You!
c语言编程练习题:7-60 Welcome to You!
74 0
|
存储 算法 C语言
[数据结构与算法(严蔚敏 C语言第二版)]第1章 绪论(课后习题+答案解析)
[数据结构与算法(严蔚敏 C语言第二版)]第1章 绪论(课后习题+答案解析)
|
C语言
初识C语言习题以及知识点
初识C语言习题以及知识点