gpt4 book ai didi

go - 对 golang 中的类型转换感到困惑

转载 作者:IT王子 更新时间:2023-10-29 01:21:11 26 4
gpt4 key购买 nike

最近想学golang。但我对来自 https://tour.golang.org/basics/13 的这段代码感到困惑.

package main

import (
"fmt"
"math"
)

func main() {
var x, y int = 3, 4
var f float64 = math.Sqrt(float64(x*x + y*y))
var z uint = uint(f)
fmt.Println(x, y, z)
}

那个效果很好。然后我试了一下

var f = math.Sqrt(9 + 16)

这也有效。但是当我将其更改为 var f = math.Sqrt(x*x + y*y) 时,为什么它不起作用?它说 不能在 math.Sqrt 的参数中使用 x * x + y * y(int 类型)作为 float64 类型

我有 javascript 背景,但我无法理解上面的代码。

最佳答案

math.Sqrt函数签名:

func Sqrt(x float64) float64

要求您传递 float64

在这种情况下:

var f float64 = math.Sqrt(float64(x*x + y*y))

你正在直接转换为float64

在这种情况下:

var f = math.Sqrt(x*x + y*y)

当需要 float64 时,您正在传递 int

在这种情况下:

var f = math.Sqrt(9 + 16)

编译器能够推断类型,并为您传递 float64

关于go - 对 golang 中的类型转换感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44939881/

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