2016-09-27 22 views
-3

go構文でMumaxのプログラムを書いていますが、私はエラーを控えていません。ここでエラーが表示されたスクリプト: goエラーが許可されていません

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

  • TTはfloatでなければならないため、nはfloatでなければなりません。これは最終的に2つのfloatの関数であるためです。これはn:= 0のデフォルトのint定義と一番上のものです。
  • 浮動小数点数のモジュラス演算子は未定義です(試してみると何が起こるかについてはthis playgroundを参照してください)。

これは、Goの実装が非常に奇妙であるか、すべて表示されていないことを意味します。

いずれにしても、nをintに強制する(2番目のifで行うように)か、何とかmath.Modを使用する必要があります。

関連する問題