Go &引用;声明和未使用;错误
我得到一个错误,说我没有使用变量…但在我的noob看来,我是:Go &引用;声明和未使用;错误,go,Go,我得到一个错误,说我没有使用变量…但在我的noob看来,我是: func Sqrt(x float64) float64 { z := float64(x); for i := 0; i < 10; i++ { z := z - (z*z - x) / (2 * z); } return z; } func Sqrt(x float64)float64{ z:=64(x); 对于i:=0;i
func Sqrt(x float64) float64 {
z := float64(x);
for i := 0; i < 10; i++ {
z := z - (z*z - x) / (2 * z);
}
return z;
}
func Sqrt(x float64)float64{
z:=64(x);
对于i:=0;i<10;i++{
z:=z-(z*z-x)/(2*z);
}
返回z;
}
有人能指出我在语言方面遗漏了什么吗?我认为这与
=
与:=
和作用域有关,但我不确定。for循环中的:=
声明了一个新变量z
,该变量将外部z
隐藏起来。将其转换为普通的=
以解决问题
func Sqrt(x float64) float64 {
z := x
for i := 0; i < 10; i++ {
z = z - (z*z - x) / (2 * z);
}
return z;
}
func Sqrt(x float64)float64{
z:=x
对于i:=0;i<10;i++{
z=z-(z*z-x)/(2*z);
}
返回z;
}
顺便说一下,为了达到同样的精度和更高的速度,您可以尝试以下实现,它同时执行两个步骤:
func Sqrt(x float64) float64 {
z := x
for i := 0; i < 5; i++ {
a := z + x/z
z = a/4 + x/a
}
return z
}
func Sqrt(x float64)float64{
z:=x
对于i:=0;i<5;i++{
a:=z+x/z
z=a/4+x/a
}
返回z
}
下面是查看函数的另一种方法
func Sqrt(x float64) (z float64) {
z = x
for i := 0; i < 10; i++ {
z = z - (z*z - x)/(2*z);
}
return
}
func Sqrt(x浮点64)(z浮点64){
z=x
对于i:=0;i<10;i++{
z=z-(z*z-x)/(2*z);
}
返回
}
一般来说,=
和:=
之间有什么区别?=
为现有变量赋值,而:=
声明一个新变量并为其赋值。如果你认识C(或朋友),这有点像foo=42
vsint-foo=42
@dubeegee a=b意味着“让a拥有b的值”。a:=b表示“声明类型和值为b的变量a”。@dubeegee:=
<代码>:=。