0619

LOGS

  • Tour of Go の続き

    • import について
      • "math/rand" でインポートしたら rand() で実行できる
      • "matn" でインポートしたら math.Rand() で実行できる
    • 以下のように文字列の中に展開したい場合,以下のように %g などで書ける(C言語間あるな)
      • %T: type
      • %v: value
    func main() {
        fmt.Printf("Now you have %g problems.\n", math.Sqrt(7))
    }
    
    • Named return values

      • 名前付きの return だが,これは個人的にはあまり使わないかなぁ
      • naked returnステートメントは、短い関数でのみ利用すべきです。

      • ともある.例

        func split(sum int) (x, y int) {
            x = sum * 4 / 9
            y = sum - x
            return
        }
        
    • Basics types

      bool
      
      string
      
      int  int8  int16  int32  int64
      uint uint8 uint16 uint32 uint64 uintptr
      
      byte // uint8 の別名
      
      rune // int32 の別名
           // Unicode のコードポイントを表す
      
      float32 float64
      
      complex64 complex128
      
    • 変数に初期値を与えないで宣言だけをすると,デフォルトで値が与えられ,それを ゼロ値(zero value) という

      数値型(int,floatなど): 0
      bool型: false
      string型: "" (空文字列( empty string ))
      
    • 変数は複数個一度に宣言できるし,初期値を設定できる

      const (
          hoge = "hoge"
            fuga = 123
      )
      
    • 定数は const を使って宣言する

      • 定数は、文字(character)、文字列(string)、boolean、数値(numeric)のみで使えます。

      • なるほど
    • for 文の書き方は,(, ) は不要だが,{, } はマスト

      • また,条件の前に評価するための簡単なステートメントを書ける
      for i := 0; i < 10; i++ {
          sum += i
      }
      
    • 初期化と後処理ステートメントの記述は任意

    • セミコロン(;)を省略することもできます。つまり、C言語などにある while は、Goでは for だけを使います。

      • ああ,なるほど. while ないのか
      • こんな感じ
        sum := 1
          for sum < 1000 {
              sum += sum
          }
      
      • if 文も for 文と書き方は同じ
        • もちろん,条件の前に評価するための簡単なステートメントを書ける
        • ただ,このステートメントで宣言された変数は if 文の外ではスコープ外なので参照できない
      • switch 文も for, if 文と書き方は同じ
        • 条件の前に簡単なステートメント…(ry
        • break 文は golang だと自動で提供されるので書かなくて良いのはありがたい
        • 2009-11-10 23:00:00 UTC は golang の誕生日とかかな?
    • Defer

      • defer ステートメントは、 defer へ渡した関数の実行を、呼び出し元の関数の終わり(returnする)まで遅延させるものです。

      • ほーなるほど.以下例文は hello world と表示される

        defer fmt.Println("world")
        
          fmt.Println("hello")
        
      • defer で渡した関数が複数個あったら,stack され,LIFO の順番で実行される

    • 今日はここまで.次回は Pointers から

results matching ""

    No results matching ""