サンプルコード(基本処理編)


コンソール出力

Hello World!

まずは基本のHelloWorld

package main

func main(){

   print("Hello 世界!\n")

}			
iota型の確認

iota型の内容が確認できるプログラム

package main

import fmt "fmt"

const (
 one = 1
 two = 2
 three = 100;
 four = 20;
 fice = 80
 pr = iota;
)

func main() {
 fmt.Printf("今、pr の中身は、%d\n", pr) 
}
			

表示される結果は5

チャネル処理

並列実行プログラム。チャネル型を使って、0~1000までの数字に現れる0の個数を取得。

package main

import "fmt"

func generate(ch chan int) {
 
 // channel Init.
  i := 0
 // Channel begin. Eternally Loop.
  for {
   
     // To 1000 EndFlag into channel
     if i > 1000 {
       ch <- -1
     }else{
     
      // mod 10 , Zero Count(1) into channel
      for j := i;j > 9;j /= 10{
       
       if j % 10 == 0 {
         ch <- 1
       }
       
      }
      
    }  
     // Count up
     i ++
   
  }
}

func main() {
 
  // allocate channel
  ch := make(chan int)
 
  // Count up for first Zero.  
  myCnt := 1
 
  go generate(ch)  
 
  for {
 
    // Recieve Channel
    i := <-ch
  
    // EndFlag Cond.
    if i < 0 {
      break
    } 
  
    // Countup
    myCnt += i
  }
 
  fmt.Printf("The amount of Zero is %d ",myCnt)
}     
			

Windows環境でのchannel型はスレッド処理になっていて、プロセス終了の前にクローズを行うとそのスレッドが終了します。 また、Go命令によって分離されたスレッド上に動かさないと、チャネルデッドロックが発生します。なので、以下の注意が必要です

  • チャネル処理はGO命令を使って送受信の処理を異なるスレッドに分離すること
  • 送受信チャネルは両方の処理が終了してからクローズすること
©2010 Tugu Katagiri

WindowsでGo言語
のまとめ

このページはIE8で動作を確認しています。

Internet Explorer 8 をダウンロード
Firefox ブラウザ無料ダウンロード