登录 主页

go-类型(值类型、引用类型)

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] 

返回>>

登录

请登录后再发表评论。

评论列表:

目前还没有人发表评论