2016-09-27 138 views
-3

我已经写了一个Mumax的程序与去语法,但我不明白我的错误。这里,其中出现在脚本中的错误:去错误%不允许

n:=0 

Dtr0:=5*1e-12 
Dtd0 :=300*1e-12 
Dtf0:=5*1e-12 
Dtz0:=20000*1e-12 
tr0:=Dtr0 
td0:=Dtd0+tr0 
tf0:=Dtf0+td0 
tz0:=Dtz0+tf0 
TT:=tz0 
n=t/TT 
tr:=tr0+(n*TT) 
td:=td0+(n*TT) 
tf:=tf0+(n*TT) 
tz:=tz0+(n*TT) 

if (n % 2 == 0) { 
     if (n<1 && t<tr) { 
       a:=(t/tr) 
     } else if (n>=1 && t>=tz0+((n-1)*TT) && t<tr) { 
       a:=1/(tr-(tz0+((n-1)*TT)))*(t-(tz0+((n-1)*TT))) 
     } else if (t>=tr && t<=td) { 
       a:=1 
     } else if (t>td && t<=tf) { 
       a:=(-1/(tf-td))*(t-td)+1 
     } else if (t>tf && t<tz) { 
       a:=0 
     } 
} 
if (int(n)%2==1) { 
     if (n<1 && t<tr) { 
       a:=-(t/tr) 
     } else if (n>=1.0 && t>=tz0+((n-1)*TT) && t<tr) { 
       a:=-(1/(tr-(tz0+((n-1)*TT)))*(t-(tz0+((n-1)*TT)))) 
     } else if (t>=tr && t<=td) { 
       a:=-1 
     } else if (t>td && t<=tf) { 
       a:=-((-1/(tf-td))*(t-td)+1) 
     } else if (t>tf && t<tz) { 
       a:=0 
     } 
} 

和错误信息是:线37:如果(N%2 == 0){:不允许:%

谢谢的很多

+3

正确地格式化代码并查看是否显示该问题。否则,请创建一个可重现的示例并显示完整的错误消息,因为此代码有太多可能的错误以知道发生了什么。 – JimB

+1

正如你可以(并且真的*必须)*自己尝试[在'if'语句的条件部分中'%'字符没有错误](https://play.golang.org/p/0n_KSMqs7H )。这意味着你真正的错误确实在别处。所以我的确在@JimB上。 – kostix

回答

0

这里有两个问题:

  • n必须是一个浮点数,因为TT必须是浮点数,因为这最终是两个浮点数的函数。这与顶部的n:= 0 default int定义冲突。
  • float上的模数运算符未定义(请参阅this playground以了解您尝试时会发生的情况)。

这意味着你有一个非常奇怪的执行或我们没有看到的一切。

在任何情况下,要么你必须强制n为int(如你在第二个if中所做的那样),或者以某种方式使用math.Mod