go语言学习--语言类型和变量作用域

Go语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性。
声明变量的一般形式是使用 var 关键字:
var name type
静态语言和动态语言的区别:

动态类型语言

动态类型语言是指在运行期间才去做数据类型检查的语言。也就是说,在用动态类型的语言编程时,永远不用给任何变量指定数据类型,该语言会在你第一次赋值给变量的时候,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其它的各种脚本语言如VBScript也多少属于动态类型语言。

静态类型语言

静态类型语言与动态类型语言刚好相反,它的数据类型是在编译期间检查的。也就是说,在编写程序的时候就要声明所有变量的数据类型。C/C++是静态类型语言的典型带便,其它的静态类型语言还有C#、Java等。

动态类型语言和静态类型语言的比较

Static typing where possible, dynamic typing when needed.

go的变量作用域:

根据变量定义位置的不同,可以分为以下三个类型:

函数内定义的变量称为局部变量

函数外定义的变量称为全局变量

函数定义中的变量称为形式参数

局部变量
在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,函数的参数和返回值变量都属于局部变量。
局部变量不是一直存在的,它只在定义它的函数被调用后存在,函数调用结束后这个局部变量就会被销毁。

全局变量
在函数体外声明的变量称之为全局变量,全局变量只需要在一个源文件中定义,就可以在所有源文件中使用,当然,不包含这个全局变量的源文件需要使用“import”关键字引入全局变量所在的源文件之后才能使用这个全局变量。
全局变量声明必须以 var 关键字开头,如果想要在外部包中使用全局变量的首字母必须大写

形式参数
在定义函数时函数名后面括号中的变量叫做形式参数(简称形参)。形式参数只在函数调用时才会生效,函数调用结束后就会被销毁,在函数未被调用时,函数的形参并不占用实际的存储单元,也没有实际值。
形式参数会作为函数的局部变量来使用。

package main

import (
"fmt"
)

var a string="123"//全局变量
func main(){
   var b int =10//局部变量
   var a string ="234"
   fmt.Printf("main() 函数中 b= %d\n", b)//%d就是形式参数
   fmt.Printf("a = %d\n", a)//Go语言程序中全局变量与局部变量名称可以相同,但是函数体内的局部变量会被优先考虑
}

你可能感兴趣的:(go,go,golang)