Go语言快速入门手册(二) - 变量与数据类型

在本系列的上一篇文章中, 介绍了在Windows 环境中如何安装和配置 Go 的开发环境。在本文中,我们将介绍 Go 语言中的变量及数据类型。

Go 程序的基本结构

Go 程序由一个或多个以 .go 为后缀的文件组成。每个文件以 package 声明开头,表明该程序逻辑上属于那个包。 package 声明后是 import 声明,然后就是包级别的类型、变量、常量和函数声明,不区分顺序。 来看下面的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main

import (
"fmt"
)

const greeting = "hello world"

var age = 12

func main() {
fmt.Println(greeting)
fmt.Println(age)
}

在例子中,声明了一个常量和一个变量,都是包级别的。这一点和后台开发人员熟悉的 Java 语言不同,Java 变量和常量的定义都必须放在类或接口中。

变量定义的语法

1
var <variable_name> [varialbe_type] [= expression]

以 var 关键字开头,变量名(variable_anme)是必须的, 类型声明为可选, 等号及后面的初始值表达式也是可选的。 如:

1
2
3
var age1 int
var age2 int = 12
var age3 = 12

以上三种定义方式都是正确的。第一种明确给出了数据类型,第二种给出了数据类型还给了正确的类型的初始值,第三种没有明确给出数据类型,但通过初始值,系统可以进行类型推断。

如果这样定义,就是不正确了,因为系统无法推断 age4 的数据类型。

1
var age4

Go 运行一次定义多个变量, 如下:

1
2
var age1, age2 int
var age3, age4 = 10, 20

实际上,在一行声明中,还可以包括不懂类型的变量,比如:

1
var title, completed = "task1", false

短变量声明

在函数内部,声明局部变量时,可以使用以下的格式:

1
variable_name := expression

也就是直接定义一个变量并赋初值,注意,这样了用的是 :=, 而不是 =

类型系统

Go 语言中类型系统如下图所示:

Go语言类型系统

基本数据类型说明

整数类型

  1. 无符号整数
    uint – 32位或64位
    uint8 – 无符号 8 位整型 (0 到 255)
    uint16 – 无符号 16 位整型 (0 到 65535)
    uint32 – 无符号 32 位整型 (0 到 4294967295)
    uint64 – 无符号 64 位整型 (0 到 18446744073709551615)

  2. 有符号整数
    int – 32位或64位
    int8 – 有符号 8 位整型 (-128 到 127)
    int16 – 有符号 16 位整型 (-32768 到 32767)
    int32 – 有符号 32 位整型 (-2147483648 到 2147483647)
    int64 – 有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)
    byte – uint8的别名(type byte = uint8)

  3. 特殊整型
    rune – int32的别名(type rune = int32),表示一个unicode码
    uintptr – 无符号整型,用于存放一个指针是一种无符号的整数类型,没有指定具体的bit大小但是足以容纳指针。uintptr类型只有在底层编程是才需要,特别是Go语言和C语言函数库或操作系统接口相交互的地方。

浮点型

float32 – IEEE-754 32位浮点型数
float64 – IEEE-754 64位浮点型数
complex64 – 32 位实数和虚数
complex128 – 64 位实数和虚数

字符串

注意: Go 中没有专门的字符类型,如果要存储单个字符(字母),一般使用byte来保存。

字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8编码标识Unicode文本。 与大多数语言一样,字符串是不可变的。

本文标题:Go语言快速入门手册(二) - 变量与数据类型

文章作者:Morning Star

发布时间:2019年08月25日 - 15:08

最后更新:2021年04月16日 - 15:04

原始链接:https://www.mls-tech.info/golang/go-quick-start-2/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。