登录
首页 >  Golang >  Go问答

go的数学求平方根math.Sqrt函数参数类型问题?

来源:SegmentFault

时间:2023-01-21 19:11:23 380浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《go的数学求平方根math.Sqrt函数参数类型问题?》,主要介绍了go,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

package main

import (
    "fmt"
    "math"
)

func main() {
    r := 2
    f := 2.0

    fmt.Printf("%T %v\n", r, r) // int 2
    fmt.Printf("%T %v\n", f, f) // float64 2

    fmt.Printf("%T %v\n", math.Sqrt(2), math.Sqrt(2)) // float64 1.4142135623730951
    fmt.Printf("%T %v\n", math.Sqrt(r), math.Sqrt(r)) // cannot use r (variable of type int) as type float64 in argument to math.Sqrt
    fmt.Printf("%T %v\n", math.Sqrt(f), math.Sqrt(f)) // float64 1.4142135623730951

}

以上代码,倒数第2个Printf和倒数第3个Printf里的math.Sqrt函数参数都是整型,为什么一个报错,一个不报错?

正确答案

2 不是整形。go 的 literal 与其他语言不一样,是“无类型的” (untyped) 。它可以在需要的地方转换为相应的类型。

r := 2
里,
r
的类型一定是确定的。这里推导的类型是 int 。然后
r
就是一个 int ,不再是 untyped 。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表