Golang的单目(一元)运算符-地址操作符和接收操作符
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的单目(一元)运算符-地址操作符和接收操作符的更多相关文章
- ISO/IEC 9899:2011 条款6.5.3——单目操作符
6.5.3 单目操作符 语法 1.unary-expression: postfix-expression ++ unary-expression -- unary-expression unar ...
- CPP-基础:单目运算符重载
关于++运算符前置和后置重载的实现实例: #include <iostream> using namespace std; //创建时钟类 class Clock { public: Cl ...
- python魔法方法-单目运算及一般算数运算
在比较的魔法方法中,我们讨论了魔法方法其实就是重载了操作符,例如>.<.==等.而这里,我们继续讨论有关于数值的魔法方法. 1.单目运算符或单目运算函数 __pos__(self) 实现一 ...
- 三角化---深度滤波器---单目稠密重建(高翔slam---十三讲)
一.三角化 [1]三角化得到空间点的三维信息(深度值) (1)三角化的提出 三角化最早由高斯提出,并应用于测量学中.简单来讲就是:在不同的位置观测同一个三维点P(x, y, z),已知在不同位置处观察 ...
- Ubuntu16.04下编译安装及运行单目ORBSLAM2
官网有源代码和配置教程,地址是 https://github.com/raulmur/ORB_SLAM2 1 安装必要工具 首先,有两个工具是需要提前安装的.即cmake和Git. sudo apt- ...
- ubuntu16.04下用笔记本摄像头和ROS编译运行ORB_SLAM2的单目AR例程
要编译ORB_SLAM2的ROS例程首先需要安装ROS,以及在ROS下安装usb_cam驱动并调用,最后搭建ORB_SLAM2. 1.ROS的安装 我的电脑安装的是ubuntu16.04系统,所以我安 ...
- 单目、双目和RGB-D视觉SLAM初始化比较
无论单目.双目还是RGB-D,首先是将从摄像头或者数据集中读入的图像封装成Frame类型对象: 首先都需要将彩色图像处理成灰度图像,继而将图片封装成帧. (1) 单目 mCurrentFrame = ...
- c++类的单目和双目运算符的重定义
这个里面需要注意的是对于双目运算符,像是加号,如果是复数加整数是一种情况,而整数加复数又是另一种情况,所以需要重定义两次. 而对于单目运算符,如果是前缀的,直接重定义就可以了,但是如果是后缀的,我们在 ...
- 【雕爷学编程】MicroPython动手做(06)——零基础学MaixPy之单目摄像头
配套 OV2640摄像头:200W像素通用24P摄像头具有200万像素(1632x1232像素),其体积小.工作电压低,提供单片UXGA摄像和影像处理器的所有功能.通过SCCB总线控制,可以输出整帧. ...
随机推荐
- vmware 因误删Linux 虚拟机磁盘,无法启动处理方法
有可能我们在做了以下误操作,导致Linux系统无法启动: 1). 磁盘损坏或虚拟机磁盘被我们删除了,而fstab文件没有更新: 2). 由于误操作或其它原因使动态库错误. 1. 首先准备好系统安装盘, ...
- Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)B(SET)
#define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;int a[2007];set<int& ...
- C++11 — lambda表达式(匿名函数)
C++11中lambda表达式的基本语法格式为: [capture](parameters) -> return_type { /* ... */ } 其中 [] 内为外部变量的传递方式: [] ...
- luogu P4014 分配问题
简单的费用流问题,每个人对每个任务连边,每个任务对汇点连,源点对每个人连,最大费用取反即可 #include<bits/stdc++.h> using namespace std; #de ...
- 本周总结(19年暑假)—— Part3
日期:2019.7.28 博客期:109 星期日 这几天要练车,嗯呢,但是对于分布式数据库的研究并没有停止!
- DateTime.Now.ToFileTime
var s = System.DateTime.Now.ToFileTime().ToString(); DateTime.Now.ToFileTime() 可以获得当前时间的长整型数字,这个数字应该 ...
- nrm 源管理器
什么是nrm nrm 是一个 npm 源管理器,允许你快速地在 npm 源间切换. 安装nrm 在命令行执行命令,npm install -g nrm,全局安装nrm. 使用 执行命令nrm ls查看 ...
- RedHat OpenShift QuickStart 1.1 OpenShift基础
openshift 提供了命令行工具和web可视化页面,这些工具通过REST API去和openshift交互 一.开始为开发人员使用OpenShift 1. 探索命令行 2. 探索web conso ...
- python join 和setDaemon 简介
Python多线程编程时,经常会用到join()和setDaemon()方法 1.join ()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等 ...
- Hyper-V网卡ping不通本机
可能的解决方案: 添加网卡时选择"旧版"