go的赋值与声明语法糖
博客专区 > 刘地 的博客 > 博客详情
go的赋值与声明语法糖
刘地 发表于4年前
go的赋值与声明语法糖
  • 发表于 4年前
  • 阅读 95
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

:= 只有在左侧有未定义变量时才能使用(有定义的变量也可以)
:= 只进行语义上的检查,循环内也可以使用,第一次之后的效果和=相同
:= 和 = 都要求左右的值和变量一一对应,不会截断
特殊情况,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
标签: go golange define
共有 人打赏支持
粉丝 100
博文 52
码字总数 69858
作品 1
×
刘地
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: