Go变量和数据类型简介

如果您想用 Go 编程语言编程,您需要学习变量和数据类型的工作原理。轻而易举:从这里开始。

译自 Golang Variables and Data Types: An Introduction,作者 Jack Wallen。

既然你已经尝鲜Go 语言的工作原理,现在我们退一步来讨论变量和数据类型。如果你曾经使用过任何 其他编程语言,你应该已经 熟悉这些概念。但是,如果 Go 是你的第一门语言,那么理解变量和数据类型的目的以及它们如何发挥作用非常重要。

如果不了解变量和数据类型,你将很难快速掌握 Go(或任何语言)。但别担心,变量和数据类型都不是复杂的概念。事实上,变量非常简单。至于数据类型,你只需要知道类型及其工作原理即可。

变量

一个典型的变量以键值对的形式工作,如下所示:

key = value

非常简单。

在 Go 中,你可以声明一个变量,定义它的数据类型,然后给它一个值。语法如下所示:

var variableName dataType

我们用 var 声明变量,用变量名给变量命名,用数据类型定义数据类型。假设我们正在为名字创建一个变量

var fname string

我们所做的是声明一个名为 fname(表示名字)的变量,类型为字符串。我们使用字符串,因为名字将由字符 a/A-z/Z 组成(稍后详细介绍数据类型)。

我们还可以在同一行中用一个值初始化该变量(如果我们愿意),如下所示:

var fname string = New

让我们在一段代码块中使用它,同时为姓氏也创建一个变量。请记住(从我们之前的教程中),我们必须使用以下命令调用主包:

package main

接下来,我们必须使用以下行从 main 中导入“fmt”:

import ("fmt")

现在,我们将创建一个函数来定义我们的变量并打印名字和姓氏。该函数如下所示:

func main() {
    var fname string = "New"
    var lname string = "Stack"
    fmt.Println(fname,lname)
}

我们的整个应用程序(名为 vars.go)如下所示:

package main

import ("fmt")

func main() {
    var fname string = "New"
    var lname string = "Stack"
    fmt.Println(fname,lname)
}

我们使用以下命令运行应用程序:

go run vars.go

输出将是:

New Stack

简单有效。

但是,如何使用用户输入的数据初始化变量?这是一个很酷的技巧。我们将坚持上面的示例。为此,我们将使用 fmt.Scan 函数从主包中。在调用 mainfmt 之后,我们首先要做的(在我们的函数中)是用以下命令声明我们的变量:

var fname string
var lname string

接下来,我们写四行代码:

  1. 指示用户输入他们的名字。
  2. 接受名字的输入。
  3. 指示用户输入他们的姓氏。
  4. 接受姓氏的输入。

此部分如下所示:

fmt.Println("Enter your first name:")
fmt.Scan(&fname)
fmt.Println("Enter your last name:")
fmt.Scan(&lname)

最后,我们写一行来打印所有内容,如下所示:

fmt.Println("Your name is:", fname, lname)

整个代码如下所示:

package main

import ("fmt")

func main() {
    var fname string
    var lname string
    fmt.Println("Enter your first name:")
    fmt.Scan(&fname)
    fmt.Println("Enter your last name:")
    fmt.Scan(&lname)
    fmt.Println("Your name is:", fname, lname)
}

当你运行应用程序时,它会询问名字,然后询问姓氏,并打印出这两个名字。

数据类型

Go 有许多包含的数据类型,分为三类:

  • 基本类型(bool、int、float64、complex128、string)
  • 聚合类型(数组、切片、结构)
  • 引用类型(指针、通道、映射、接口)

基本类型很明显,定义如下:

  • var boolean bool = true
  • var integer int = 100
  • var float float64 = 100.09
  • var comp complex128 = 1 + 3i
  • var st string = “New Stack”

它们分解如下:

  • 布尔值为 true/false
  • int 是一个整数
  • float64 是一个小数
  • complext128 是所有复数的集合,具有浮点数和虚数分量
  • string 是一个字符串

接下来,我们有聚合类型,它可以采用以下形式:

  • someArray := [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
  • var slice []int = someArray[0:5]

结构聚合类型有点复杂,因为它可以包含自定义字段。你像这样声明一个结构:

type Box struct {
    X int
    Y int
}

然后你可以像这样初始化这些值:

b := Box{1,2}

最后,还有引用类型,例如指针,它包含它们所基于的变量的内存地址。指针使用 * 字符,如下所示:

var p *int

然后我们可以声明如下内容:

myInteger := 100

然后我们像这样从变量创建指针:

p = &myInteger

我们稍后将深入探讨这些概念,但了解 Go 中包含的基本类型非常重要。

恭喜您在 Go 语言中又迈进了一步。它可能不如 Python 简单,但它远没有 C、C++ 或类似编程语言那么复杂。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注