Golang学习笔记_06——变量和常量
Golang学习笔记_03——匿名函数和闭包
Golang学习笔记_04——递归函数
Golang学习笔记_05——延迟调用
1. 变量
Go语言中的变量是存储数据的基本单元,它们允许你为数据命名,从而在程序的不同部分中方便地引用和操作这些数据
1.1 声明
使用var
关键字声明变量
var name type = value
// name 是变量的名称
// type 是变量的类型
// value 是变量的初始值
var a int = 10
var b string = "hello world"
var c float64
在Go语言中,编译器可以根据初始值自动推断变量的类型,因此可以省略类型声明
var name = value
// 省略变量类型
var d = 42
var e = "hello world"
在函数内部,可以使用 :=
进行简短变量声明,这种方式不仅声明变量,还根据初始值自动推断类型,并且只能用于函数内部。
name := value // 省略了var关键字,省略了类型
func main() {
f := 20
g := "Short declaration"
}
1.2 多变量声明
在Go语言中,可以在一行中声明多个变量。
var a, b, c int = 1, 2, 3
// var age int, name string = 18, "go" // 语法错误
// syntax error: unexpected comma after top level declaration
var x, y string = "foo", "bar"
d, e, f := 4, 5, "baz"
1.3 作用域
变量的作用域决定了变量在程序中的哪些部分可见。Go语言中的变量作用域主要有以下几种:
- 包级作用域:通过
var
在包级别声明的变量,在整个包中都可见。 - 函数级作用域:通过
var
在函数内部声明的变量,或者在函数内部使用:=
声明的变量,其作用域仅限于该函数内部。 - 块级作用域:在
{ }
内部的if
,for
,switch
语句中声明的变量,其作用域仅限于该块内部。
1.4 生命周期
变量的生命周期是指变量从创建到释放的时间段。在Go语言中,局部变量(函数内部声明的变量)在函数被调用时创建,在函数返回时销毁。全局变量(包级别声明的变量)在程序开始时创建,在程序结束时销毁。
1.5 匿名变量
使用 _
可以忽略不需要的返回值或变量。这在处理多返回值函数时特别有用。
func justDemo() (int, string) {
return 100, "hello world"
}
func anonymousVariableDemo() {
_, str := justDemo()
age, _ := justDemo()
fmt.Println(str)
fmt.Println(age)
}
测试方法
func Test_anonymousVariableDemo(t *testing.T) {
anonymousVariableDemo()
}
输出结果
=== RUN Test_anonymousVariableDemo
hello world
100
--- PASS: Test_anonymousVariableDemo (0.00s)
PASS
2. 常量
与变量不同,常量在声明时必须初始化,并且在程序运行期间其值不能被改变。使用 const
关键字声明常量。
const Pi = 3.14
const Greeting = "Hello, Go!"
源码
// var_demo.go 文件
package var_demo
import "fmt"
var num int = 100
var name string = "Go"
var a, b, c int = 1, 2, 3
var x, y string = "foo", "bar"
var xx, yy string = "100", "hello world"
// var age int, name string = 18, "go"
// syntax error: unexpected comma after top level declaration
func varDemoFunc() {
pi_demo := 3.1415926
age, name, isBoy := 20, "boy", true
fmt.Println(num)
fmt.Println(name)
fmt.Println(pi_demo)
fmt.Println(yy)
fmt.Println(age)
fmt.Println(isBoy)
}
func constDemoFunc() {
const Pi = 3.1415926
const World = "world"
fmt.Println(World)
fmt.Println(Pi)
}
func justDemo() (int, string) {
return 100, "hello world"
}
func anonymousVariableDemo() {
_, str := justDemo()
age, _ := justDemo()
fmt.Println(str)
fmt.Println(age)
}
// var_demo_test.go 文件
package var_demo
import "testing"
func Test_varDemoFunc(t *testing.T) {
varDemoFunc()
}
func Test_constDemoFunc(t *testing.T) {
constDemoFunc()
}
func Test_anonymousVariableDemo(t *testing.T) {
anonymousVariableDemo()
}
原文地址:https://blog.csdn.net/LuckyLay/article/details/144424478
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!