gpt4 book ai didi

Golang 函数 - 返回类型

转载 作者:IT王子 更新时间:2023-10-29 02:27:38 25 4
gpt4 key购买 nike

这是继“Hello world”之后我的第一个Golang 程序。请找到以下旨在执行基本算术和多类型返回演示的代码块。这只是学习 Go func 的假设示例。但是,我在编译时遇到以下异常。从异常(exception)情况来看,我假设,对 int8 操作数的操作返回 int16/int32 作为返回类型,而这并不正确。

问题:语言假设 int8 可以安全地分配给 int16int32 是否安全

package main
import (
"fmt"
)
func Arithmetic(a,b int8) (int8,string,int16,int32){
return a-b, "add",a*b,a/b
}
func main() {
a,b,c,d :=Arithmetic(5,10)
fmt.Println(a,b,c,d)
}

错误:

C:/Go\bin\go.exe run C:/GoWorkspace/src/tlesource/ff.go
# command-line-arguments
.\ff.go:15: cannot use a * b (type int8) as type int16 in return argument
.\ff.go:15: cannot use a / b (type int8) as type int32 in return argument

Process finished with exit code 2

最佳答案

Is it it safe for language to assume int8 is safely assignable to int16 or int32

是的,如果 Go 在赋值时进行隐式转换,那将会是。但它没有(仅在适用时进行接口(interface)包装)。

有几个原因:

  • 如果不引入类型层次结构的概念,就不能将自动转换的概念推广到所有类型。而且,如您所知,Go 中的所有具体类型都是不变的。
  • Go 是“反魔法”的,本着这种精神,它不会做您没有要求它做的事情(除了例如在指针上写屏障)。

关于Golang 函数 - 返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40250449/

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