文档章节

go的赋值与声明语法糖

刘地
 刘地
发布于 2013/07/29 21:35
字数 324
阅读 119
收藏 0
:= 只有在左侧有未定义变量时才能使用(有定义的变量也可以)
:= 只进行语义上的检查,循环内也可以使用,第一次之后的效果和=相同
:= 和 = 都要求左右的值和变量一一对应,不会截断
特殊情况,map、chan、类型推定可以返回一个值,也可以是两个值
当map中该键不存在时,总是返回零值和false,否则后者返回true

当chan关闭以后,总是返回零值和false,否则后者返回true

package main

type INT int

func (r *INT) show() {
	println(int(*r))
}

func A() (INT, INT) {
	return 1, 2
}

func B() (INT, bool) {
	return 3, true
}

func C() (INT, error) {
	return 4, nil
}

func D(i <-chan int,o chan<- int) {
	x := <- i
	println(x)
	y,z := <- i
	println(y,z)
	o <- 1
}

func main() {
	
	var t INT
	t.show()
	
	a,b:=A()
	// a := A() /*报错*/
	// t = A()  /*报错*/
	println(a,b)
	
	a,c:=B()
	// c := B() /*报错*/
	// t = B()  /*报错*/
	println(a,c)
	
	a,d:=C()
	// d := C() /*报错*/
	// t = C()  /*报错*/
	println(a,d)
	
	// A().show() /*报错*/
	// B().show() /*报错*/
	// C().show() /*报错*/
	
	m:=map[int]int{1:1}
	i:=m[1]
	println(i)
	j,k:=m[7]
	println(j,k)
	
	u:=make(chan int)
	v:=make(chan int)
	go D(u,v)
	u <- 1
	u <- 2
	<- v
	close(u)
	close(v)
	y,z := <- u
	println(y,z)
}
// 0
// 1 2
// 3 true
// 4 (0x0,0x0)
// 1
// 0 false
// 1
// 2 true
// 0 false

© 著作权归作者所有

共有 人打赏支持
刘地
粉丝 100
博文 52
码字总数 69858
作品 1
朝阳
[iOS、Unity、Android] 浅谈闭包的使用方法

前言 我们经常所编程语言的的进步速度是落后于硬件的发展速度的。 但是最近几年,闭包语法在各个语言中都有自己的体现形式,例如   •  C语言中使用函数指针作为回调函数的入口;   •...

浩浩老师
2015/09/07
43
0
Python装饰器

装饰模式有很多经典的使用场景,例如插入日志、性能测试、事务处理等等,有了装饰器,就可以提取大量函数中与本身功能无关的类似代码,从而达到代码重用的目的。下面就一步步看看Python中的装...

萌面道人
2017/11/09
0
0
兄弟来开车 我们一起学Kotlin 基础一

前言 就是一点基础的东西东西,比如修饰符、循环等 如何创建一个变量或常量 变量创建之严谨的创建变量 这句代码意思是 创建一个变量(var)名字叫name类型是String类型,她的值是“李明”,是...

no白菜
06/12
0
0
ES6新增核心语法一览

let 和const let不可以声明前置 let不可以重复声明 存在块级作用域 这样就可以替换掉原来IIFE的写法 const 声明的常量不可以改变 适用于let的也同样适用于const 解构赋值 数组的解构(用来给...

Monettt
2017/11/23
0
0
取代python的 and or 的x if y else z方法,补充匿名递归方法

今天在弄我的语法分析器的时候,为了观察结果,我想找一个压平嵌套列表的函数(我写了个但是不太满意,记得cnblogs有看到过),于是搜了一下,找到了这篇文章: http://www.cnblogs.com/c-h...

刘地
2012/11/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Python介绍

Python介绍 一、简介 Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载等,有益于增强源代码的复用性。Python相对于Lisp这种传统的函数式编程语言,P...

星汉
7分钟前
0
0
VS_设置护眼背景色

工具---->选项---->环境---->字体和颜色:

一个小妞
9分钟前
0
0
Flask跨域请求的处理方法

在Flask开发RESTful后端时,前端请求会遇到跨域的问题。下面是解决方法: 使用 flask-cors库可以很容易的解决 pip install flask-cors 两种方法,一个是全局/批量的,一个是单一独立的: 安全...

ykbj
10分钟前
1
0
Pandas学习记录-Series

系列(Series)是能够保存任何类型的数据(整数,字符串,浮点数,Python对象等)的一维标记数组。轴标签统称为索引。 pandas.Series Pandas系列可以使用以下构造函数创建 - pandas.Series( dat...

kipeng300
18分钟前
0
0
可以实现内网穿透的几款工具

最近没什么事情,看了一些关于内网穿透的文章,因我本身已是做微信开发相关的工作,对这部分关注的比较多,现分享给大家。 首先说下内网穿透的原理。 NAPT原理 在NAT网关上会有一张映射表,表...

哥本哈根的小哥
19分钟前
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部