自学内容网 自学内容网

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)!