1. 常见的值类型和引用类型分别有哪些?

值类型:基本数据类型 int 系列, float 系列, bool, string 、数组和结构体struct,使用这些类型的变量直接指向存在内存中的值,值类型的变量的值通常存储在栈中。

引用类型:指针、slice切片、map、管道chan、interface 等都是引用类型


1. 值类型和引用类型如何获取指针地址

func change(arr []int) {
   arr[0] = 7
   fmt.Println(arr) // [7 2 3]
}
func change2(arr [3]int) {
   arr[0] = 7
   fmt.Println(arr) // [7 2 3]
}
func main() {
   //值类型
   x := [3]int{1,2,3}
   change2(x)
   fmt.Println(x) // [1 2 3] // 并不是你以为的 [7 2 3]
   fmt.Printf("%p\n",&x) //0xc000014150

   //引用类型
   xx := []int{1,2,3}
   change(xx)
   fmt.Println(xx)    // [7 2 3] // 切片是引用类型,使用指针传值
   fmt.Printf("%p\n",xx) // 0xc000014198
}


点赞(418)

评论列表共有 0 条评论

立即
投稿
返回
顶部