Go变量和数据类型简介

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

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

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

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

变量

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

非常简单。

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

csharp 复制代码
var variableName dataType

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

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

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

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

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

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

csharp 复制代码
func main() {
    var fname string = "New"
    var lname string = "Stack"
    fmt.Println(fname,lname)
}

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

go 复制代码
package main

import ("fmt")

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

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

输出将是:

sql 复制代码
New Stack

简单有效。

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

csharp 复制代码
var fname string
var lname string

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

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

此部分如下所示:

scss 复制代码
fmt.Println("Enter your first name:")
fmt.Scan(&fname)
fmt.Println("Enter your last name:")
fmt.Scan(&lname)

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

arduino 复制代码
fmt.Println("Your name is:", fname, lname)

整个代码如下所示:

go 复制代码
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]

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

go 复制代码
type Box struct {
    X int
    Y int
}

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

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

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

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

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

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

本文在云云众生yylives.cc/)首发,欢迎大家访问。

相关推荐
蒙娜丽宁2 天前
Go语言错误处理详解
ios·golang·go·xcode·go1.19
qq_172805593 天前
GO Govaluate
开发语言·后端·golang·go
littleschemer3 天前
Go缓存系统
缓存·go·cache·bigcache
程序者王大川4 天前
【GO开发】MacOS上搭建GO的基础环境-Hello World
开发语言·后端·macos·golang·go
Grassto4 天前
Gitlab 中几种不同的认证机制(Access Tokens,SSH Keys,Deploy Tokens,Deploy Keys)
go·ssh·gitlab·ci
高兴的才哥5 天前
kubevpn 教程
kubernetes·go·开发工具·telepresence·bridge to k8s
少林码僧6 天前
sqlx1.3.4版本的问题
go
蒙娜丽宁6 天前
Go语言结构体和元组全面解析
开发语言·后端·golang·go
蒙娜丽宁6 天前
深入解析Go语言的类型方法、接口与反射
java·开发语言·golang·go
三里清风_6 天前
Docker概述
运维·docker·容器·go