2024-07-30 04:37PM
在go语言中,变量有两种不同的存储方式:值类型和引用类型。
1.值类型:
1)值类型变量直接存储数据值。常见的值类型有int、float、bool、string等。
2)当你将一个值类型变量赋值给另一个变量时,实际上是将数据值复制了一份。修改其中一个变量不会影响另一个变量。
2.引用类型:
1)引用类型变量存储的是指向数据的引用或者地址。常见的引用类型有slice、map、chan、interface{}、function等。
2)当你讲一个引用类型变量赋值给另一个变量时,实际上是复制了一个指向同一块内存空间的引用。修改其中一个变量会影响另一个变量。
3.值拷贝和引用拷贝的区别:
1)值拷贝:创建一个新的变量,并将原变量的值复制到新变量中,两个变量相互独立,互不影响。
2)引用拷贝:创建一个新的变量,但该变量指向了原变量的内存地址。两个变量指向同一个内存空间,因此修改任何一个变量都会影响到另一个。
eg:
package main
import "fmt"
func main() {
// 值类型-数组
a := [3]int{1, 2, 3}
b := a
b[0] = 100
fmt.Println("a", a, "b", b)
// 引用类型-切片
e := []int{1, 2, 3}
f := e
f[0] = 100
fmt.Println("e", e, "f", f)
}
运行结果如下:
$ go run value_type.go
a [1 2 3] b [100 2 3]
e [100 2 3] f [100 2 3]
登录
请登录后再发表评论。
评论列表:
目前还没有人发表评论