go 第二篇(变量声明、数据类型)

2022-05-23  本文已影响0人  原来哥哥是万家灯火

1、变量声明
go是一种静态语言,意味着变量的类型固定,这个类型需要在声明的时候指明。
声明变量有两个关键词var const,const是声明一个常量。
var x int 声明x,其类型是int
var x int = 9 声明x,其类型是int,并初始化值为9
如果声明并初始化,因为初始化值有类型,所以变量类型可以省略。
var x = 9
如果变量未初始化,则其值是零值。每种类型的变量都有自己的零值。
可以一次声明并初始化多个变量

var (
  name = "张三",
  age = 18,
  isAdult = true
)

const和var一样,只是const声明的是常量

除了用const和var,还可以用短变量声明操作符:=,声明并初始化变量x := 9
这种方式只能声明一个局部变量,只能在函数里这样做

func main() {
    x := 9
}

golang里没有变量提升,使用一个变量前必须先声明。

go匿名变量,go里面的函数,是可以返回多个值的,有时候不需要一些值,可以用一个匿名变量接收。

func queryUserName() (string, err) {
  return "zs",  errors.New("err")
}

name, _ := queryUserName() // 不关心err,所以用匿名变量忽略它

变量作用域,有全局变量,局部变量。一个变量声明了,就必须要使用,不然是会报错的。短变量无法改写一个全部变量。

var age = 99

func main() {
    f()
    fmt.Println("🍌", age)
}

func f()  {
    age := 88
    fmt.Println("🍎", age)
}

2、数据类型
布尔类型
bool var x bool 零值是false

整数类型
int8、int16、int32、int64、int
uint8、uint16、uint32、uint64、uint
int8是带符号的8位整数,范围是 -128~127
uint8是不带符号的8位整数,范围是0~255
int和uint的位数都是一个机器字长,64位系统就是64位,32位就是32

浮点数类型
float32
float64

字符串
string 字面量只能用""``,不能用单引号
name := "zhangsan"

byte类型
代表一个字节,也是uint8类型的别名。比如读取一个文件,这堆二进制内容就是又byte类型组成的数组。

func main() {
    b, _:= ioutil.ReadFile("xxx.png")
    fmt.Println(reflect.TypeOf(b))
    fmt.Println(b)
}

rune类型
上面说字符串不能用单引号,rune用单引号声明,这其实也暗示rune类型和字符也有点关系,它代表的是一个字符的[unicode码点]

func main() {
    x := '张'
    fmt.Println(x, reflect.TypeOf(x))
}

如果看完了上面关于unicode的介绍,就会知道一个unicode码点,是4个字节。rune也是int32的别名。(至于为什么不是uint32,我也搞不懂为什么要这样)

上一篇下一篇

猜你喜欢

热点阅读