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 项目中实现类似 Java Shiro 的权限控制中间件?
开发语言·go
幼儿园老大*4 小时前
走进 Go 语言基础语法
开发语言·后端·学习·golang·go
架构师那点事儿9 小时前
golang 用unsafe 无所畏惧,但使用不得到会panic
架构·go·掘金技术征文
于顾而言1 天前
【笔记】Go Coding In Go Way
后端·go
qq_172805591 天前
GIN 反向代理功能
后端·golang·go
follycat1 天前
2024强网杯Proxy
网络·学习·网络安全·go
OT.Ter1 天前
【力扣打卡系列】单调栈
算法·leetcode·职场和发展·go·单调栈
探索云原生1 天前
GPU 环境搭建指南:如何在裸机、Docker、K8s 等环境中使用 GPU
ai·云原生·kubernetes·go·gpu
OT.Ter2 天前
【力扣打卡系列】移动零(双指针)
算法·leetcode·职场和发展·go
码财小子2 天前
k8s 集群中 Golang pprof 工具的使用
后端·kubernetes·go