gpt4 book ai didi

go - go中内置类型的类函数初始化的目的是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 03:43:14 25 4
gpt4 key购买 nike

我知道,在表达式 := 初始化之后,go 将右侧无类型常量转换为左侧类型变量:a := 5。它看起来与 b := int(5) 语句相同。那么,第二个陈述的目的是什么,它与第一个陈述有何不同?另外,在某个地方,我看到了 []int(nil) 表达式,这让我有点困惑。

最佳答案

通常您不需要将 := 与类型转换结合使用,因为它违背了 := 的要点。 := 是用来推断类型的。通常可以从常量值推断出类型。

但并非总是如此。例如……

package main

import (
"fmt"
)

func main() {
a := 5
b := uint(5)
var c uint = 5

fmt.Printf("%T\n", a)
fmt.Printf("%T\n", b)
fmt.Printf("%T\n", c)
}

a := 5 推断 aint 类型,但是如果您希望它是其他类型呢? 5 可以是 a bunch of different integer types .也许是无符号整数?也许是特定长度的整数,例如 int16

您可以通过显式指定常量类型(如 b := uint(8))或显式指定变量类型(如 var)来实现c uint = 8。对于 b := uint(8)b 的类型是从分配给它的 uint 常量中推断出来的。对于 var c uint = 88 被推断为无符号整数,因为它被分配给类型为 uint 的变量。在这两种情况下,bc 都是 uint 类型。

我不知道 b := uint(8)var b uint = 8 之间有什么显着区别,所以你使用哪个在很大程度上取决于口味.我对 var b uint = 8 有一个轻微的偏好,因为它在视觉上与 b := 8 截然不同,可以清楚地表明正在使用的显式类型用过。

关于go - go中内置类型的类函数初始化的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47602587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com