欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > Golang学习笔记_06——变量和常量

Golang学习笔记_06——变量和常量

2024/12/22 0:40:18 来源:https://blog.csdn.net/LuckyLay/article/details/144424478  浏览:    关键词:Golang学习笔记_06——变量和常量

Golang学习笔记_03——匿名函数和闭包
Golang学习笔记_04——递归函数
Golang学习笔记_05——延迟调用


文章目录

    • 1. 变量
      • 1.1 声明
      • 1.2 多变量声明
      • 1.3 作用域
      • 1.4 生命周期
      • 1.5 匿名变量
    • 2. 常量
    • 源码


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 := 20g := "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.14const Greeting = "Hello, Go!"

源码

// var_demo.go 文件
package var_demoimport "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 declarationfunc varDemoFunc() {pi_demo := 3.1415926age, name, isBoy := 20, "boy", truefmt.Println(num)fmt.Println(name)fmt.Println(pi_demo)fmt.Println(yy)fmt.Println(age)fmt.Println(isBoy)}func constDemoFunc() {const Pi = 3.1415926const 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_demoimport "testing"func Test_varDemoFunc(t *testing.T) {varDemoFunc()
}func Test_constDemoFunc(t *testing.T) {constDemoFunc()
}func Test_anonymousVariableDemo(t *testing.T) {anonymousVariableDemo()
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com