• Golang的单目(一元)运算符-地址操作符和接收操作符


           Golang的单目(一元)运算符-地址操作符和接收操作符

                                     作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

     

     

     

    一.Golang的单目(一元)运算符概述

      常见的地址操作符:
        &:       取地址运算符,表示取一个变量的内存地址,它同时也属于一元操作符(也叫单目运算符)。
          举个例子:有一个变量N
    ame := "yinzhengjie",使用"&Name"就获得一个十六进制的数字,该数字对应的就是Name变量的内存地址。            *:
          取值运算符,表示取一个变量所指向内存地址中保存的数据,它同时也属于一元操作符(也叫单目运算符)。
          该操作符我们在Go语言的面向对象操作时会有对应的操作,这里暂时有个印象即可。
      常见的接收操作符:     
    <-:       接收操作符,即完成接收操作,它同时也属于一元操作符(也叫单目运算符)。       举个例子:"<- ch",如果ch代表了元素类型为byte的通道(channel)类型值,则此表达式就表示从ch中接收一个byte类型值的操作。       对该操作符使用比较感兴趣的小伙伴可以参考我关于channel相关的笔记。

      温馨提示:
        两个问题:
          如何区分"&"到底是位与逻辑运算符还是取地址运算符?
          如果区分"*"到底是乘法算数运算符还是取值运算符?
        问题剖析:
          其实很好区分,位与逻辑运算符和乘法算数运算符都需要两个变量(或等式)来参与运算,比如"a & b"和"a * b",它们需要变量a和b同时参与才能运算,我们称之二元运算符,也可以称为双目运算符。
          而取地址运算符和取值运算符只需要一个变量就能参与运算,比如"&a"和"*a",它们只需要一个变量就可以运算,我们称之为一元运算符,也可以称为一元运算符。
        Golang是否存在三目运算符呢?
          综上所述,你是否立即想起来Python和Java都支持三目运算符,那Go语言是否支持呢?其实Go语言官方并没有直接支持三目运算符相关的表达式,而是建议咱们使用if语句来代替,关于if语句是什么?我们在后面的章节接着聊。

     

    二.地址操作符实战案例

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        Name := "yinzhengjie"
    
        /*
            &:
                取地址运算符,表示取一个变量的内存地址,它同时也属于一元操作符(也叫单目运算符)。
        */
        fmt.Println(&Name)
        fmt.Printf("point的类型为[%T],Name变量的内存地址为[%x]
    ", Name, &Name)
        fmt.Printf("point的类型为[%T],Name变量的内存地址为[%X]
    ", Name, &Name)
    
        point := &Name //注意,point此时是一个指针变量哟~
    
        /*
            *:
                取值运算符,表示取一个变量所指向内存地址中保存的数据。
        */
        fmt.Printf("point的类型为[%T],point的值为[%s]
    ", point, *point)
    }

     

     

  • 相关阅读:
    【定位不准的烦心事系列】第2篇:卫星信号弱到底是咋回事
    高德「渲染练习生计划」启动,开启专业渲染技术人旅程!
    Mybatis第三方PageHelper分页插件原理
    List集合分页处理的方法
    什么是ETCD及其应用场景
    获取不到http请求头自定义参数
    etcd和Zookeeper孰优孰劣对比
    Zookeeper应用场景汇总(超详细)
    List集合分页处理的方法
    国产化之x64平台安装银河麒麟操作系统
  • 原文地址:https://www.cnblogs.com/yinzhengjie2020/p/12286112.html
Copyright © 2020-2023  润新知