首页 > 学院 > 开发设计 > 正文

Go语言学习之变量(The way to go)

2019-11-08 00:43:40
字体:
来源:转载
供稿:网友

上一篇博客对go程序对整体结构进行了简要介绍,记忆对fmt包进行了简要介绍,今天跟大家分享的是go语言中的变量,variable。

var关键字

go语言使用var关键字来定义变量,但是和c++不同的是,类型放在变量的后面,格式如下:

var variable_list optional_data_type;

下面就简单定义几个变量:

var i, j, k intvar c, ch bytevar f, salary float32d = 42var a, s = 100, "abc" //混合变量声明

这里我们需要明确一下,为什么go会把变量的类型写在后面呢? 在c++中您是否记得这样的问题呢:

int *p, q

上面p为指针,q为int类型,给我们造成了很大的困扰。

另外可以已组的形式进行变量定义:

var( x, y int a, s = 100, "abc")

上面需要注意的是使用圆括号而不是花括号。

自动类型推断和零初始化

对于普通的变量,go语言也会给我们进行零初始化,避免了在c++中变量为垃圾值。

同样,可以省略变量类型,由编译器推断。

示例代码:

package mainimport "fmt"func main() { var a = 1 //自动推断a为int var b int //b初始化为0 fmt.PRintln(a,b)}

省略var的简短模式

有时候,我们可以省略var关键字,使用更加简洁的语法进行变量的定义和初始化:

package mainimport "fmt"func main() { a := 1 b, s := 2, "go" fmt.Println(a, b, s)}

这里有个容易被忽略的大坑,就是这种简短模式只能用在函数的内部 看下面的代码:

package mainimport "fmt"var x = 1func main() { fmt.Println(&x, x) x := 2 //重新定义了局部变量 fmt.Println(&x, x)}

输出: 0x160004 1 0x1040a140 2

当你写下下面的代码时候,就会报错,no new variables on left side of :=

y := 1 fmt.Println(&y, y) y := 2 fmt.Println(&y, y)

未使用的局部变量视为错误

注意,这里说的是局部变量,而不是全局变量:

package mainimport "fmt"var x = 1func main() { var a, s = 1, "abc" fmt.Println(a)}

错误: s declared and not used

变量类型

最后就是介绍一下go中的变量类型:

boolstringint int8 int16 int32 int64uint uint8 uint16 uint32 uint64 uintptrbyte // alias for uint8rune // alias for int32 // represents a Unicode code pointfloat32 float64complex64 complex128

注意,没有double,但是有float64

这里就是简单提一下,之后还会进行更详细的关于类型,以及类型之间转换的介绍。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表