Golang 声明变量;

 

var 声明变量

- 变量简介:

变量指定了某存储单元(Memory Location)的名称,该存储单元会存储特定类型的值。在 Go 中,有多种语法用于声明变量

 

- 声明单个变量:

  - 语法: var name type

    - var: 声明变量用的 关键字;

    - name: 声明的变量的名字;

    - type: 声明该变量是属于什么类型的数据;

    - 示例:

// 声明一个为int类型的变量 age
var age int

// 当还没有给变量 age 赋值的时候;
// Go 会自动地将其初始化,赋值该变量类型的零值(Zero Value)
// 变量可以赋值为本类型的任何值

 

- 同时声明多个变量:

  - 语法: var name1, name2, name3 type     

  - 示例:

// 声明一个为int类型的变量 age1 和 age2
var age1, age2 int

// 当还没有给变量 age 赋值的时候;
// Go 会自动地将其初始化,赋值该变量类型的零值(Zero Value)
// 变量可以赋值为本类型的任何值

 

 

- 声明变量且初始化赋值:

  - 语法: var name type = initialvalue  或者  var name1, name2, name3 type = initialvalue1, initialvalue2, initialvalue3

  - 示例:

package main

import "fmt"

func main() {
    var age int = 29 // 声明int类型的变量 age 并且赋值为 29

    fmt.Println("my age is", age)
}


// 打印内容:my age is 29

 

 

类型推断

- 简介:

当变量在声明的时被赋值,那么Go 能够自动推断具有初始值的变量的类型;
因此,如果变量有初始值,就可以在变量声明中省略 type

- 语法:var name = initialvalue (Go 能够根据初始值自动推断变量的类型)

 

- 示例:

package main

import "fmt"

func main() {
    var age = 29 // 可以推断类型

    fmt.Println("my age is", age)
}


// 打印内容:my age is 29

 

简短声明 :=

- 介绍:

Go 也支持一种声明变量的简洁形式,称为简短声明(Short Hand Declaration),
该声明使用了 := 操作符

 

- 语法:name := initialvalue


- 注意:

  - := 操作符左边的所有变量都有初始值;

  - := 操作符的左边至少有一个变量是尚未声明的;

  - Go 是强类型(Strongly Typed)语言,因此不允许某一类型的变量赋值为其他类型的值;

  - 错误示例:

 1 //  一, 当 := 操作符 左边的变量有一个没有初始值的时候:
 2 package main
 3 
 4 import "fmt"
 5 
 6 func main() {  
 7     name, age := "naveen" //error
 8 
 9     fmt.Println("my name is", name, "age is", age)
10 }
11 // 报错:cannot assign 1 values to 2 variables;因为 age 没有被赋值;
12 
13 
14 //  二, 当 := 操作符 左边的变量都没有初始值的时候:
15 package main
16 
17 import "fmt"
18 
19 func main() {  
20     a, b := 20, 30 // 声明a和b
21     fmt.Println("a is", a, "b is", b)
22     a, b := 40, 50 // 错误,没有尚未声明的变量
23 }
24 // 报错:no new variables on left side of :=     因为: a 和 b 的变量已经声明过了,:= 的左边并没有尚未声明的变量
25 
26 
27 // 三, 当被声明的int类型变量重新赋值为string时:
28 package main
29 
30 func main() {  
31     age := 29      // age是int类型
32     age = "naveen" // 错误,尝试赋值一个字符串给int类型变量
33 }
34 // 报错:"naveen" (type string) as type int in assignment; 因为 age 本来声明为 int 类型,而我们却尝试给它赋字符串类型的值
三种错误示例:

 

  

  

 

posted @ 2018-10-25 20:45  浮生凉年  阅读(711)  评论(0编辑  收藏  举报