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

来源:互联网 发布:淘宝查看行业消费人群 编辑:程序博客网 时间:2024/04/29 04:13

上一篇博客对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

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

1 0
原创粉丝点击