Golang——变量、类型

目录

声明和使用变量(go要求使用者声明的变量必须使用,否则会报错)

声明变量

初始化变量

声明常量

了解基本数据类型

整数数字

浮点数字

布尔型

字符串

类型转换



声明和使用变量(go要求使用者声明的变量必须使用,否则会报错)

声明变量

若要声明变量,需要使用 var 关键字:

var a int//声明一个int型的名为a的变量
var b,c string//声明两个类型相同的变量时,可在一行实现

同时,可以通过一个“块”来声明变量:

var(
    a int
    b,c string
)

初始化变量

在声明变量时,你可能需要为它们赋予初始值。方法大约有四种:

var (
    firstName string = "John"
    lastName  string = "Doe"
    age       int    = 32
)

在go语言中,你甚至可以不用指定类型,go会推断变量的类型:

var (
    firstName = "John"
    lastName  = "Doe"
    age       = 32
)

这样将会得到与上一种方法相同的结果。

下面给出的这种方法在go语言中较为常用:

package main
​
import "fmt"
​
func main() {
    firstName, lastName := "John", "Doe"
    age := 32
    fmt.Println(firstName, lastName, age)

请注意 import "fmt" 语句。 我们使用 import 关键字将包的内容引入范围中。 我们要导入“fmt”包,因此可以在代码中使用 Println 方法。 我们将在后面的文章中详细了解此关键字。

声明常量

有时,你需要在代码中加入静态值,这称为 常量。 Go 支持使用常量。 用于声明常量的关键字是 const

例如:

const A = 200

如果需要在一个块中声明多个常量,可以按如下所示执行:

const (
    A = 0
    B = 1
    C = 2
)

常量和变量之间既有相似之处,也有一些重要差异。 例如,你可以在不使用常量的情况下声明常量。 你不会收到错误消息。 不能使用冒号等于号来声明常量。 如果采用这种方式,Go 会发出警告。

了解基本数据类型

整数数字

一般来说,定义整数类型的关键字是 int。 但 Go 还提供了 int8int16int32int64 类型,其大小分别为 8、16、32 或 64 位的整数。

使用 32 位操作系统时,如果只是使用 int,则大小通常为 32 位。 在 64 位系统上,int 大小通常为 64 位。 但是,此行为可能因计算机而不同。 可以使用 uint。 但是,只有在出于某种原因需要将值表示为无符号数字的情况下,才使用此类型。 此外,Go 还提供 uint8uint16uint32uint64 类型。

在 Go 中将值从一种类型转换为另一种类型时,需要显式声明新类型。

可以通过查看 Go 源代码来了解每种类型的范围。 了解每种类型的范围可帮助你选择正确的数据类型,并且还可避免占用内存中的位。

浮点数字

Go 提供两种浮点数大小的数据类型:float32float64。 如果需要存储较大的数字,则可以使用这些类型,这些类型无法适应前面提到的任何一个整数类型。 这两种类型的区别是它们可以容纳的最大位数。

布尔型

布尔类型仅可能有两个值:truefalse。 你可以使用关键字 bool 声明布尔类型。

var featureFlag bool = true

Go 不同于其他编程语言,在 Go 中,你不能将布尔类型隐式转换为 0 或 1。 你必须显式执行此操作

字符串

最后, 在 Go 中,关键字 string 用于表示字符串数据类型。 若要初始化字符串变量,你需要在双引号(")中定义值。 单引号(')用于单个字符。

有时,你需要对字符进行转义。 为此,在 Go 中,请在字符之前使用反斜杠 (\)。 例如,下面是使用转义字符的最常见示例:

  • \n:新行

  • \r:回车符

  • \t:选项卡

  • \':单引号

  • \":双引号

  • \\:反斜杠

在 Go 中,如果你不对变量初始化,所有数据类型都有默认值。下面列出了我们目前浏览过类型的几个默认值:

  • int 类型的 0(及其所有子类型,如 int64

  • float32float64 类型的 +0.000000e+000

  • bool 类型的 false

  • string 类型的空值

    类型转换

与c语言类似:

var integer16 int16 = 127
var integer32 int32 = 32767
fmt.Println(int32(integer16) + integer32)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Golang中,字符串是不可变的,因此无法直接进行深拷贝。但是,可以将字符串转换为字节切片进行处理。可以使用以下方法进行字符串切片的深拷贝: ```go s := "hello" sc := \[\]byte(s) copySc := make(\[\]byte, len(sc)) copy(copySc, sc) ``` 在上述代码中,我们首先将字符串转换为字节切片`sc`,然后创建一个与`sc`相同长度的新切片`copySc`,最后使用`copy`函数将`sc`的内容复制到`copySc`中。这样就实现了字符串切片的深拷贝。 需要注意的是,深拷贝只适用于字节切片,而不适用于字符串本身。因为字符串是不可变的,无法直接修改其内容。因此,如果需要对字符串进行修改,可以先将其转换为字节切片,进行修改后再转换回字符串。 希望这个回答对您有帮助!\[1\] #### 引用[.reference_title] - *1* [golang——切片](https://blog.csdn.net/qq_52534495/article/details/126205852)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [golang 面试常问(简短变量声明、字符串、切片、defer)](https://blog.csdn.net/LIFE_PLAN/article/details/127992236)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值