Golang学习笔记(二):类型、变量、常量

2020-01-28 11:37:04于海丽

声明不赋值,类型零值,非空值,而是声明后的默认值

bool: false
integers: 0
floats: 0.0
string: ""
pointers,functions,interfaces,slices,channels,maps: nil

保留字

break      case   chan     const        continue
default    defer  else     fallthrough  for
func       go     goto     if           import
interface  map    package  range        return
select     struct switch   type         var

变量

1.变量声明

//第一种,指定变量类型,声明后若不赋值,使用默认值
var v_name v_type
v_name = value

//第二种,根据值自行判定变量类型
var v_name = value

//第三种,省略var, 注意 :=左侧的变量不应该是已经声明过的,否则会导致编译错误.
v_name := value

e.g.
var a int = 10
var b = 10
c : = 10

示例:

package main
var a = 1234
var b string = "hello"
var c bool

func main(){
    println(a, b, c)
}

结果:

1234 hello false

2.多变量声明:

//类型相同多个变量, 非全局变量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3

var vname1, vname2, vname3 = v1, v2, v3 //和python很像,不需要显示声明类型,自动推断

vname1, vname2, vname3 := v1, v2, v3 //出现在:=左侧的变量不应该是已经被声明过的,否则会导致编译错误


//类型不同多个变量, 全局变量, 局部变量不能使用这种方式
var (
    vname1 v_type1
    vname2 v_type2
)

示例:

package main

var x, y int
var (  //这种只能出现在全局变量中,函数体内不支持
    a int
    b bool
)

var c, d int = 1, 2
var e, f = 123, "hello"

//这种不带声明格式的只能在函数体中出现
//g, h := 123, "hello"

func main(){
    g, h := 123, "hello"
    println(x, y, a, b, c, d, e, f, g, h)
}

结果:

0 0 0 false 1 2 123 hello 123 hello

注意:

A.多变量赋值时,将先行计算所有左侧变量的值,再进行赋值

    i := 0
    i, l[i] = 1, 2