2016-09-27 99 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