加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

(八)golang--复杂类型之指针

发布时间:2020-12-16 09:16:27 所属栏目:大数据 来源:网络整理
导读:首先我们要明确: (1)基本数据类型:变量存的就是值,也叫值类型; (2)获取变量的地址,用,例如var num int,获取num的地址:num; (3)指针类型:变量存的是一个地址,这个地址指向的空间存的才是值,例如var ptr *int = num; (4)获取指针类型所指

首先我们要明确:
(1)基本数据类型:变量存的就是值,也叫值类型;

(2)获取变量的地址,用&,例如var num int,获取num的地址:#

(3)指针类型:变量存的是一个地址,这个地址指向的空间存的才是值,例如var ptr *int = #

(4)获取指针类型所指向的值,使用*,例如var *ptr int,使用*ptr获取ptr指向的值;

package main

import (
    "fmt"
)

func main() {
    var num int = 1
    var ptr *int = &num
    fmt.Println(num的地址是:",&num)
    fmt.Println(ptr的值是:,ptr)
    fmt.Println(ptr的地址是:ptr)
}

?

ptr是一个指针,它的值是num的地址,同时,它自己也会有一个地址。我们可以通过地址定位到变量并改变变量的值:


    var ptr *int
    fmt.Println(num的值是:num
    *ptr = 10
    fmt.Println(

?

?我们还可以通过切换指针的值来改变不同变量的值:注意指针类型与变量类型之间要匹配。


)

func main() {
    var num1 int = 1
    var num2 int = 2num1的值是:num2的值是:num1
    *ptr = 10
    ptr = &num2
    *ptr = 20

?

?指针使用细节:
(1)值类型,都有对应的指针,形式为*数据类型,比如int对应的指针就是*int,float32对应的指针就是*float;

(2)值类型包括:基本数据类型int系列、float系列、bool、string、数组和结构体;

?

值类型和引用类型:

(1)值类型包括:基本数据类型int系列、float系列、bool、string、数组和结构体;

(2)引用类型:指针、slice切片、map、管道channel、interface等;

值类型和引用类型的区别:
(1)值类型,变量直接存储,内存通常在中分配;

(2)引用类型:变量存储的是一个地址,这个地址对应的空间才是真正存储的数据值,内存通常在堆上分配,当没有任何变量引用这个地址时,改地址对应的数据空间就是一个垃圾,由GC来回收;

?

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读