go 语言值类型和引用类型

值类型和引用类型概述

在 go 语言中值类型改变变量副本时不会改变变量本身的值 ( 数组 基本数据类型,结构体 属于值类型 );

在 go 语言中引用类型改变变量副本时会改变变量本身的值 ( 切片 map 属于引用类型 );

值类型示例

package main

import "fmt"
type Person struct {
	Name string
	Age  int
}
func main() {
	var p1 = Person{
		"John",
		30,
	}
	var p2 = p1
	p2.Name = "test.."
	fmt.Printf("%#v 类型 %T", p1, p1)
}

引用类型示例

func main() {
	var arr = []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
	arr2 := arr
	arr2[0] = 99
	fmt.Println(arr)
}