Golang中 :=的详细用法

在Go语言中:=运算符被用来声明变量以及给变量赋值,它可以自动推断变量类型;

就像这样:

mystr := "hello world"

它等同于:

	var mystr string
	mystr = "hello world"

但是,有些情况你需要知道;看下面这段代码:

package main

func main(){

	mystr := "hello world"
	
	println(mystr)

	mystr := "I was just here"
	
	println(mystr)
	
}

这段代码编译器会报错;因为:=已经声明变量,相同变量不能在相同的作用域下声明两次,编译器会有这种错误:

no new variables on left side of :=

它告诉你 := 左侧不是新的变量,在这种情况,你应该使用 =,因为在前面该变量已经被声明;

可是,在多变量同时赋值时,情况又变得不一样了,看下面这段代码:

package main

func main(){

	mystr := "what is your name?"
	
	println(mystr)

	mystr,name := "my name is","Robot 1"

	println(mystr,name)

}

这段代码能正确编译并运行;因为在多变量赋值时,:= 运算符左侧,只要其中有一个变量是新的,就可以使用 :=,这里 mystr 使用了两次 := ,因为第二次使用时是在多变量赋值的情况下,且其中包含一个新的变量;

但你不能改变 mystr 的类型,因为在第一次使用 := 时,它已经被声明为字符串类型。

你可以使用了 _ 来忽略其中一个值,但 _ 不属于新的变量;

还有一点,:= 不能被用在函数体外,也就是说,当你打算声明一个全局变量时,你只能使用var。

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/golang-colon-equal-sign.html

分类: 计算机技术
推荐阅读:
C语言islower()函数:判断字符是否为小写字母 islower()是C语言标准库中的一个函数,用于检查一个字符是否为小写字符;如果传入的字符参数是小写字母,则返回非0值,否则返回0;
从Nginx日志中提取UserAgent、IP等信息 有时我们需要用到大量UserAgent信息,而Nginx日志文件中包含了海量真实的UserAgent,从Nginx文件中提取所有UserAgent信息就很有必要;
Rust使用莱布尼茨公式计算圆周率 莱布尼茨公式是一种用于计算圆周率的无限级数。该公式的形式如下:pi/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9 - ... 通过对无限级数进行逐项求和,可以逐步逼近圆周率的值。在 Rust 中,可以使用循环和累加器来计算莱布尼茨级数的前N项和。
PySide6 exec()函数详细教程 PySide6.QtWidgets.Application类的exec()函数使程序进入Qt主事件循环并等待直到调用exit()函数,然后返回调用exit()时设置的值,如果调用的是quit()函数,则是0;此处的exit()和quit()函数是QApplication类的成员函数;
python object()函数 object() 是 Python 的内置函数之一,它返回一个新的 object 对象。这个对象没有任何特殊的属性或方法,它是所有类的基类,即所有 Python 类都直接或间接地继承自 object 类。
一定有你不知道的Python技巧 Python一直以代码简洁著称;想写出艺术般的代码,需要你掌握各种Python技巧,这些技巧有些是语言特性,有些则是广大程序员的经验心得;今天作者就给大家网罗了一些Python技巧,一起来看看吧。