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

                                 作者:尹正杰

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

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

  常见的地址操作符:
    &:
      取地址运算符,表示取一个变量的内存地址,它同时也属于一元操作符(也叫单目运算符)。
      举个例子:有一个变量Name := "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]\n", Name, &Name)
fmt.Printf("point的类型为[%T],Name变量的内存地址为[%X]\n", Name, &Name) point := &Name //注意,point此时是一个指针变量哟~ /*
*:
取值运算符,表示取一个变量所指向内存地址中保存的数据。
*/
fmt.Printf("point的类型为[%T],point的值为[%s]\n", point, *point)
}

Golang的单目(一元)运算符-地址操作符和接收操作符的更多相关文章

  1. ISO/IEC 9899:2011 条款6.5.3——单目操作符

    6.5.3 单目操作符 语法 1.unary-expression: postfix-expression ++  unary-expression --  unary-expression unar ...

  2. CPP-基础:单目运算符重载

    关于++运算符前置和后置重载的实现实例: #include <iostream> using namespace std; //创建时钟类 class Clock { public: Cl ...

  3. python魔法方法-单目运算及一般算数运算

    在比较的魔法方法中,我们讨论了魔法方法其实就是重载了操作符,例如>.<.==等.而这里,我们继续讨论有关于数值的魔法方法. 1.单目运算符或单目运算函数 __pos__(self) 实现一 ...

  4. 三角化---深度滤波器---单目稠密重建(高翔slam---十三讲)

    一.三角化 [1]三角化得到空间点的三维信息(深度值) (1)三角化的提出 三角化最早由高斯提出,并应用于测量学中.简单来讲就是:在不同的位置观测同一个三维点P(x, y, z),已知在不同位置处观察 ...

  5. Ubuntu16.04下编译安装及运行单目ORBSLAM2

    官网有源代码和配置教程,地址是 https://github.com/raulmur/ORB_SLAM2 1 安装必要工具 首先,有两个工具是需要提前安装的.即cmake和Git. sudo apt- ...

  6. ubuntu16.04下用笔记本摄像头和ROS编译运行ORB_SLAM2的单目AR例程

    要编译ORB_SLAM2的ROS例程首先需要安装ROS,以及在ROS下安装usb_cam驱动并调用,最后搭建ORB_SLAM2. 1.ROS的安装 我的电脑安装的是ubuntu16.04系统,所以我安 ...

  7. 单目、双目和RGB-D视觉SLAM初始化比较

    无论单目.双目还是RGB-D,首先是将从摄像头或者数据集中读入的图像封装成Frame类型对象: 首先都需要将彩色图像处理成灰度图像,继而将图片封装成帧. (1) 单目 mCurrentFrame = ...

  8. c++类的单目和双目运算符的重定义

    这个里面需要注意的是对于双目运算符,像是加号,如果是复数加整数是一种情况,而整数加复数又是另一种情况,所以需要重定义两次. 而对于单目运算符,如果是前缀的,直接重定义就可以了,但是如果是后缀的,我们在 ...

  9. 【雕爷学编程】MicroPython动手做(06)——零基础学MaixPy之单目摄像头

    配套 OV2640摄像头:200W像素通用24P摄像头具有200万像素(1632x1232像素),其体积小.工作电压低,提供单片UXGA摄像和影像处理器的所有功能.通过SCCB总线控制,可以输出整帧. ...

随机推荐

  1. 【PAT甲级】1020 Tree Traversals (25 分)(树知二求一)

    题意: 输入一个正整数N(N<=30),给出一棵二叉树的后序遍历和中序遍历,输出它的层次遍历. trick: 当30个点构成一条单链时,如代码开头处的数据,大约1e9左右的结点编号大小,故采用结 ...

  2. 树莓派4B踩坑指南 - (5)设置阿里云的源及解决apt提示依赖

    解决树莓派apt升级/安装提示依赖问题: 注意!!buster是根据系统版本(cat /etc/os-release)来写的,如果是jessie或者stretch要改为buster.参考解决树莓派ap ...

  3. 莫烦 - Pytorch学习笔记 [ 二 ] CNN ( 1 )

    CNN原理和结构 观点提出 关于照片的三种观点引出了CNN的作用. 局部性:某一特征只出现在一张image的局部位置中. 相同性: 同一特征重复出现.例如鸟的羽毛. 不变性:subsampling下图 ...

  4. C语言笔记 14_标准库&assert&ctype&errno&float&limits

    C 标准库 <assert.h> 简介 C 标准库的 assert.h头文件提供了一个名为 assert 的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息. 已定义的宏 ass ...

  5. Docker 基础入门

    Docker是一个开放的平台,将应用和基础设施分隔开来, 方便快速的交付软件.利用docker的提供的方法可以快速的测试和部署代码,显著的减少写代码和部署直接的延迟. Docker 平台(The Do ...

  6. Linux centos7 shell特殊符号、cut命令、sort_wc_uniq命令、tee_tr_split命令、shell特殊符号

    一.shell特殊符号.cut命令 *任意字符 [root@davery ~]# ls /tmp/*.txt/tmp/1.txt /tmp/2.txt /tmp/q.txt[root@davery ~ ...

  7. 在linux中安装redis

    1.安装gcc环境: yum install gcc-c++ 2.下载redis的源码包,把源码包上传到linux服务器 3.解压源码包 :  tar -zxvf redis-3.0.0.tar.gz ...

  8. Day1-XDoj-1062

    题目描述 一天,lw梦见自己在打dota,然而对面是一个加强过的卡尔!于是,他每次都被n个技能瞬间秒杀.愤怒的lw决定买BKB,来加强生存力. 由于加强过的卡尔是电脑操作的,他每次看见lw时,只会以1 ...

  9. C# 篇基础知识6——文件和流

    计算机以文件的形式把数据存储在磁盘.光盘等存储设备上.文件的管理和操作是操作系统的一个重要组成部分,.NET 框架提供了一组功能强大的类,可以方便地对文件进行操作和管理. 1.文件操作相关的类 用于文 ...

  10. Java设计模式之Iterator模式

    分类: [java]2013-07-15 10:58 917人阅读 评论(0) 收藏 举报 所谓Iterator模式,即是Iterator为不同的容器提供一个统一的访问方式.本文以java中的容器为例 ...