Go语言学习笔记(二)基本数据类型

Go的数据类型

 Go的数据类型及相关运算与大多数语言类似。拥有其它编程语言基础的读者,如:JavaScript,Java,C++等上手Go并不会很难,也不需要花大量的时间浪费在编程语言的共性上。

变量声明

 Go语言中声明变量的一般形式是使用var关键字:

var identifier type

 需要注意的是,Go和许多编程语言不同,它在声明变量时将变量的类型放在变量的名称之后。其原因如下:

  • 为了避免像C语言中那样含糊不清的声明形式,例如:int *a,b;。在这个例子中,只有a是指针,而b不是。如果需要让这两个变量都是指针,则需要将其分开来写。而在Go中,则可以很轻松地将它们都声明成指针类型
var a,b *int
  • 从左至右的声明方式,更容易理解。
var name string
var age int
var sex bool

 上述代码也可以合并起来:

var (
    name string
    age int
    sex bool
)

这种合并写法一般用于全局变量的声明。但无论全局还是局部,当一个变量被声明之后,该变量都会赋予对应类型的零值

 对于Go来说,它的编译器可以直接根据变量的值来判断该变量的数据类型,例如:

package main

import fm "fmt"

func main() {
	var (
		name = "Bob"
		age  = 19
		sex  = false
	)
	fm.Println(name) // Bob
	fm.Println(age) // 19
	fm.Print(sex) // false
}

 然而,Go的编译器有时候推断出来的类型并不是我们想要的类型,为了确保能够推断出我们想要的类型,还是需要显示声明数据类型:

var name string = "Bob"

案例

package main

import (
	"fmt"
	"reflect"
)

func main() {
	var weight = 55
	fmt.Println(weight)
	fmt.Println(reflect.TypeOf(weight)) // int
	var height float32 = 175
	fmt.Println(height)
	fmt.Println(reflect.TypeOf(height)) // float32
}

 当你仅仅需要在函数内部声明变量时,可以使用:=语法:

name := "Bob"

 如果想要一次性声明不同种数据类型的变量:

    var name string
    var age int
    var sex bool
    name, age, sex = "Bob", 18, false

 若不声明,则应该使用:=来对多个变量赋予不同类型的值

name, age, sex := "Bob", 18, false

 对于交换ab两个数的值,我们也可以直接使用下述语法:

    a, b = b, a

 需要注意的是,Go中有一个特殊变量_。该变量是一个只写写量,也就意味着你只能写,不能读。这样做是因为 Go 语言中你必须使用所有被声明的变量,但有时你并不需要使用从一个函数得到的所有返回值。因此,你可以使用这个只写变量_来抛弃一些不用的值。

init函数

 变量除了可以在全局声明中初始化,也可以在 init() 函数中初始化。这是一类非常特殊的函数,它不能够被人为调用,而是在每个包完成初始化后自动执行,并且执行优先级比 main() 函数高。执行下述程序:

package main

import "fmt"

func init() {
	fmt.Println("init.....")
}

func main() {
	fmt.Println("main.....")
}

 每个源文件可以包含多个 init() 函数,同一个源文件中的 init() 函数会按照从上到下的顺序执行,如果一个包有多个源文件包含 init() 函数的话,则官方鼓励但不保证以文件名的顺序调用。初始化总是以单线程并且按照包的依赖关系顺序执行。

数据类型

 Go的数据类型与其它语言,尤其是JavaScript的数据类型相似,这里不一一举例。后续会在更多的代码示例中看到。

 Go的数据类型有:字符串、数组、结构体、指针、接口等。

算术运算符

 和大多数语言一样,Go的算术运算包括:+-*/%

    a := 45
    b := 15
    c := a + b
    c := a - b
    c := a * b
    c := a / b
    c := a % b

逻辑运算符

 Go的逻辑运算和大多数语言一样,包括:==,!=,<,>,>=,<=,&&,||

    a := 10
    b := 15
    c := 10
    a == b //false
    b != c // true
    a == b && b != c // false
    a == c && a != b // true

位运算

 位运算只能用于整数类型的变量,且需当它们拥有等长位模式时。Go的位运算包括:&,|,^,&^,<<,>>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PG Thinker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值