正如其他人已经解释的那样,:=用于声明和赋值,并尝试自动猜测(推断)变量的类型。

这是一种简短的形式:

var foo int

foo = 32

// OR:

var foo int = 32

// OR:

var foo = 32

一些规则

你不能使用:= =。

illegal := 42

func foo() {

legal := 42

}

你不能两次使用它们:

legal := 42

legal := 42 //

因为,:=引入了“一个新变量”,因此使用它两次不会重新声明第二个变量,所以它是非法的。

但是,如果其中一个变量是新的,则可以在“多变量”声明中使用它们两次:

foo, bar := someFunc()

foo, jazz := someFunc() //

baz, foo := someFunc() //

这是合法的,因为,您没有声明所有变量,您只是将新值重新分配给现有变量,并同时声明新变量。

您可以在较新的范围内使用short声明变量,即使该变量已在以下情况下使用相同的名称声明:

var foo int = 34

func some() {

// because foo here is scoped to some func

foo := 42 //

foo = 314 //

}

这里,:=是合法的,因为它在if func的范围内声明了=。 foo = 314是合法的,因为它只是为foo指定了一个新值。

_

您可以将它们用于多变量声明和赋值:

foo, bar := 42, 314

jazz, bazz := 22, 7

_

您可以在短语句上下文中声明相同的名称:if,for,switch:

foo := 42

if foo := someFunc(); foo == 314 {

// foo is scoped to 314 here

// ...

}

// foo is still 42 here

因为,:=在=中,只属于那个if条款并且它在不同的范围内。

因此,作为一般规则:如果要轻松声明变量,可以使用:=,或者,如果要覆盖现有值,则可以使用=。

c语言中冒号运算符,冒号等于 - G之间的差异:=和=运算符相关推荐

  1. C语言中判断浮点数是否等于0

    1.C语言中判断浮点数是否等于0: 2.C语言中判断两个浮点数是否相等: float.double分别遵循R32-24,R64-53的标准.他们尾数的位数分别是23.52,即误差在2^-23,2^-5 ...

  2. html语言中的双冒号,::before 和:after 中双冒号和单冒号有什么区别?解释一下这 2 个伪元素的作用...

    标题:::before 和:after 中双冒号和单冒号有什么区别?解释一下这 2 个伪元素的作用? 相关知识点: 单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素.(伪元素由双冒号和伪 ...

  3. 项目中所了解的一些浏览器之间的差异

    各主流浏览器的区别各主流浏览器的区别 http://www.cnblogs.com/lhb25/archive/2013/06/05/html5-and-css3-2013.html 一. Tride ...

  4. html语言中的双冒号,css单冒号和双冒号用法和区别

    最近突然被别人问起css单冒号和双冒号有什么区别,答曰:"不知道". 虽然还在填坑中,但作为一个跨过了初级的FEer,感觉着实汗颜,刚好今天下午在搜别的问题的时候,突然看到一个对比 ...

  5. c语言中无符号和有符号之间的运算

    关于计算机中有符号,无符号数值的表示以及它们之间的运算 是基本知识,但工作这么多年也不敢说完全搞明白透彻. 这几天在将知识点进行了一些梳理,并做了一些有意思的试验. 计算机中,数值的表示和运算都是用补 ...

  6. R语言中如何导入元素两两之间的距离数据

    R语言中dist()函数与as.dist()函数 下面给出五个元素两两之间的距离,试利用最短距离法.最长距离法和类平均法做出五个元素的谱系聚类,画谱系图并做出比较. 如何将其数据导入R中如图所示 其表 ...

  7. r计算百分位数_R中产生的分位数和百分位数之间的差异

    请原谅我的数学,但为什么这两个代码的结果不同?预计2015年第63和82行累计百分比的支出与第二年产生的支出相同.第一个是X63的0.591,X82的0.858,第二个代码在cumsum_pct中分别 ...

  8. c语言程序可以单独编译,c语言中的函数可不可以单独进行编译?_后端开发

    在C语言中,要求参加运算的数必须是整数的运算符是什么_后端开发 在C语言中要求参加运算的数必须是整数的运算符是"%":"%"符号在c语言中有两种释义,一是求余符 ...

  9. 一步带你了解C语言中++、--的使用方法!

    一步让你了解C语言中++.--的使用方法! 一.前言 二.++.- -运算符 (1)前缀形式和后缀形式单独使用,并未出现在表达式中 (2)前缀形式后缀形式放入表达式中 三.代码实现 一.前言 C语言中 ...

最新文章

  1. SCCM 2012 SP1系列(七)分发部署exe软件
  2. 战神背光键盘如何关系_显瘦又有肌肉 神舟战神Z7MKP5GZ评测
  3. 实战并发编程 - 05等效不可变对象CopyOnWriteArrayList适用场景剖析_写时复制COW
  4. good way for university professors accumulating the citation
  5. VC创建DLL动态链接库及其调用
  6. python 爬关键词,Python爬虫实战:爬取微博热搜关键词
  7. I.MX6 make menuconfig OTG to slave only mode
  8. [原创] 对于深度学习(deep learning)在工业界的应用现状和突破 [by matthewbai]
  9. Pandownload作者被抓后,我决定用docker搭建一款私有网盘
  10. 谷歌浏览器快速保存整个网页的方法
  11. apple API常用英语名词
  12. ios自己搭建服务器证书,iOS一步一步实现Https自建证书校验
  13. EduCoder-Web程序设计基础-html5—表格高级样式的设置-第3关:设置表格的内边框样式
  14. iPhone卡在一个界面出不来,怎么办?
  15. 关于虚拟机VMware中打开Ubuntu20.04提示AMD-V处于禁用状态解决办法(基于MSI微星主板)
  16. 解决Windows11 Microsoft Store微软商店无法联网 Windows聚焦不更新 微软账户无法登录等
  17. 关于ORA-1658错误和用户表空间配额
  18. 数据归档,存储的完美储备军
  19. 1688商品sku采集抓取实现方法
  20. 10款Java小游戏(详解+源码)

热门文章

  1. 什么是EFLOPS?
  2. 晨曦记账本怎么记录家庭收支,借还款
  3. 【MATLAB教程案例40】语音信号的共振峰频率倒谱法估计matlab仿真学习
  4. 小i机器人登陆纳斯达克:市值4.2亿美元,与苹果打了10年专利侵权官司
  5. oracle设置主键自增(超简单)
  6. 前端基于uniapp[uniPush]实现APP消息推送(安卓、IOS)
  7. 九阴服务器维护,九阴:全区服10月23日9:00-10:00临时维护公告
  8. 3亿新市民金融崛起前夕,谁能率先打通服务链?
  9. 大佬横行的币圈,谁才是真正“一割”?
  10. 【MVC】发布问题0x80070021与0x8007000d,解决方案