(一)初識Go

9283 ワード

どうしてGo言語があるの?
粗い認識は、Goがjavaより軽く、性能的にpythonに近いため、使いやすく、同時性が良いからです.
Goの基本文法の違い
  • 強制コードスタイル,{"単独で1行になってはいけない,文末にセミコロンがない
  • 変数:タイプを宣言しない場合、変数タイプは右の値で決定されます:
  •    i := 1.0   // i float64  ,             
    

    宣言タイプ(注意タイプは変数名の後):
    	var i float64 = 1.0
    
  • 関数:同じタイプの変数を最も右に宣言し、複数の値
  • を返すことができます.
        func p1(x,y,z int) int float { 
        }
    
  • 定数:constキーワード
  • サイクル:forの1つの書き方しかなく、「()」がなく、「{}」
  • が必要である
    package main  //go main     
    import (      //    
    	"fmt"
    )
    	for i := 1 ; i < 10; i++{
    		fmt.Println("i : ", i)
    }
    
    //      
    	for {
    	}
    
  • ブランチ:if条件式で宣言された変数、ifおよびelseブロックでの役割ドメイン、
  • 
    func pow(x, n, lim float64) float64 {
    	if v := math.Pow(x, n); v < lim {
    		return v
    	} else {
    		fmt.Printf("%g >= %g
    "
    , v, lim) } // v return lim }

    簡単なプログラミング練習:ループと関数
    関数とループを練習するために,ニュートン法で平方根関数を実現する平方根関数を実現した.
    コンピュータは通常、xの平方根を計算するためにサイクルを使用する.ある推測値zから、zに基づいて² xとの近似度はzを調整し、より良い推測を生み出す.
    z−=(z∗z−x)/(2∗z)z−=(z*z−x)/(2*z)z−=(z∗z−x)/(2∗z)z−=(z∗z−x)/(2∗z)調整の過程を繰り返し、推測の結果はますます正確になり、得られた答えもできるだけ実際の平方根に近づく.
    提供されるfunc Sqrtで実現される.入力が何であれ、zに対する適切な推測は1である.開始するには、10回繰り返し計算し、毎回のz値を印刷します.異なる値x(1、2、3...)について、あなたが得た答えがどのように結果に迫っているかを観察して、向上の速度がどれだけ速いかを推測します.
    ヒント:タイプ変換または浮動小数点数構文で浮動小数点数を宣言して初期化します.
    z:=1.0 z:=1.0 z:=1.0 z:=fl oa t 64(1)z:=float 64(1)z:=float 64(1)次に、値の変更を停止(または変更が非常に小さい)したときにサイクルを終了するようにサイクル条件を変更します.反復回数が10より大きいか小さいかを観察します.xまたはx/2のようなzの初期推測を変更しようとした.あなたの関数の結果は標準ライブラリのmathです.Sqrtは近いですか?
    (注:このアルゴリズムの詳細に興味がある場合は、上のz² −xはz² 到達する値(すなわちx)までの距離を2 zで割ってzとする² の導関数はzを通じて² の変化速度でzの調整量を変化させる.この一般的な方法をニュートン法と呼ぶ.多くの関数、特に平方根に非常に有効です.)
    マイコード:
    package main
    
    import (
    	"fmt"
    	"math"
    )
    
    func Sqrt(x float64) float64 {
    	var z float64 = 1
    	tmp := 1.0
    	tmp = ( z * z - x ) / ( 2 * z )	
    	cnt := 1
    	for math.Abs(tmp) > 0.0000000000001{
    		z -= tmp
    		tmp = ( z * z - x ) / ( 2 * z )
    		cnt++
    	}
    	fmt.Println("Times:  ;",cnt)
    	return z
    }
    
    func main() {
    	for i := 1 ;i < 11;i++ {
    		fmt.Println(Sqrt(float64(i)))
    		fmt.Println("math : ",math.Sqrt(float64(i)))
    	}
    }
    
    

    実行結果:
    Times: 1
    1
    math :  1
    Times: 6
    1.4142135623730951
    math :  1.4142135623730951
    Times: 6
    1.7320508075688772
    math :  1.7320508075688772
    Times: 6
    2.000000000000002
    math :  2
    Times: 7
    2.23606797749979
    math :  2.23606797749979
    Times: 7
    2.449489742783178
    math :  2.449489742783178
    Times: 7
    2.6457513110645907
    math :  2.6457513110645907
    Times: 7
    2.8284271247461903
    math :  2.8284271247461903
    Times: 7
    3
    math :  3
    Times: 7
    3.1622776601683795
    math :  3.1622776601683795