<p class="toc">目录
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。--百度百科
变量相当于内存中一个数据存储空间的表示,你可以把变量看作是房屋的门牌号,通过门牌号我们可以找到房间,同样,通过变量名可以访问或修改变量(值)。
Golang对各种变量、方法、函数等命名时使用的字符序列成为标识符
Go中函数、变量、常量、类型、语句标签和包的名称遵循一个简单的规则:名称的开头是一个字母(Unicode中的字符即可)或下划线,后面可以跟任意数量的字符、数字和下划线,并区分大小写。
如果一个实体在函数中声名,她只在函数局部有效。如果在函数外声明,它将对包里面的所有源文件可见。实体第一个字母的大小写决定其可见性是否跨包。如果名称以大写字母开头,它是导出的,意味着它对包外是可见和可访问的,可以被自己包之外的其他程序所引用,像fmt包中的Printf。包名总是由小写字母组成。
包名:保持package的名字和目录保持一致,尽量采取有意义的包名,简短、有意义,不要和标准库冲突
Go有25个像if和switch这样的关键字,只能用在语法允许的地方,他们不能作为变量名称:
break default func interface
select case defer go
map struct chan else
goto package switch const
fallthrough if range type
continue for import return
var
另外,还有三十几个内置的预声明的常量、类型和函数:(还有一种说法叫做预定义标识符)
常量:
true false iota nil
类型:
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex64 complex128
bool byte rune string error
函数:
make len cap new append copy
close delete complex real imag panic
recover
<h2 id="定义变量的三种方式">定义变量的三种方式
第一种,指定变量类型,声明后若不赋值,使用默认值。
var var_name var_type
var_name = value
示例:
var num int
num = 10
第二种,不指定数据类型,根据值自行判断变量类型
var var_name = value
示例:
var num = 10 //编辑器能根据值的类型推断num的类型
第三种,省略var,这种最简洁,也最常用
var_name := value
示例:
num := 10
<h3 id="注意事项">注意事项:
-
:= 左侧的变量至少有一个是未声明的,否则会导致编译错误。
package main
import "fmt"
func main() {
var a = 10
a := 20
fmt.Println(a)
}

但是如果左侧有未声明过的新变量,则是允许的。短变量声明不需要声明所有在左边的变量。如果一些变量在同一个词法块中声明,那么对于那些变量,短声明的行为等同于赋值。
package main
import "fmt"
func main() {
var a = 10
a,b := 20,30
fmt.Println(a,b)
}

-
同时声明多个变量
package main
import "fmt"
func main() {
var a,b int = 1,2
var c,d = 2.3,4.5
e,f := "cstxco",6
fmt.Println(a,b,c,d,e,f)
}
-
在函数外声明的全局变量如果想赋值必须在声明的同时赋初值,如果不赋值,系统会默认给默认值0,但是不能在声明后再赋值(可以在函数里面再赋值),那样运行的话会运行时报错
package main
import "fmt"
var a = "Hello World"
var b int = 20
var c bool
func main() {
fmt.Println(a,c)
}

错误用法
package main
import "fmt"
//错误用法(先声明,再赋值)
var var1,var2,var3 int
var1,var3 = 1,2,3
func main() {
fmt.Println(a,c)
}

-
在Go程序中声明的变量必须使用,不使用的话会报错;导入的包也必须使用,不使用的话也会报错。(声明的全局变量可以不使用)
package main
var a = 20
func main() {
var b int = 40
}

-
声明全局变量可以采用大括号形式
package main
import "fmt"
var (
a int = 4
b float32
)
func main() {
fmt.Println(a,b)
}
类型和表达式部分可以省略一个,但是不能都省略。如果类型省略,它的类型由初始化表达式决定;如果表达式省略,其初始值对应于类型的零值——对于数字是0,对于布尔值是flase,对于字符串是"",对于接口和引用类型(slice、指针、map、通道、函数)是nil。对于一个像数组或结构体这样的复合类型,零值是其所有元素和成员的零值。
在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。
步骤:
- 导入fmt包
- 调用fmt包的fmt.Scanln()或者fmt.Scanf()
示例:
要求:可以从控制台接收用户信息[姓名、年龄、薪水、是否通过考试]
-
使用fmt.Scanln()获取(没有没有格式化要求的话,使用这种即可)
package main
import "fmt"
func main() {
//可以从控制台接收用户信息[姓名、年龄、薪水、是否通过考试]
//1.先声明需要的变量
var name string
var age byte
var sal float32
var isPass bool
fmt.Println("请输入姓名:")
//当程序执行到fmt.Scanln(&nme),程序会停止在这里,等待用户输入,并回车
fmt.Scanln(&name)
fmt.Println("请输入年龄:")
fmt.Scanln(&age)
fmt.Println("请输入薪水:")
fmt.Scanln(&sal)
fmt.Println("请输入是否通过考试:")
fmt.Scanln(&isPass)
fmt.Printf("名字是 %v n 年龄是 %v n 薪水是 %v n 是否通过考试 %v n",name,age,sal,isPass)
}

-
使用fmt.Scanf()获取(如果对输入的数据进行格式化操作,可以使用这种)
package main
import "fmt"
func main() {
//可以从控制台接收用户信息[姓名、年龄、薪水、是否通过考试]
//1.先声明需要的变量
var name string
var age byte
var sal float32
var isPass bool
fmt.Println("请输入姓名、年龄、薪水、是否通过考试,使用空格隔开:")
fmt.Scanf("%s %d %f %t",&name,&age,&sal,&isPass)
fmt.Printf("名字是 %v n 年龄是 %v n 薪水是 %v n 是否通过考试 %v n",isPass)
}

(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|