株式会社ヴァンデミックシステム

Blog

<スポンサーリンク>

タイプアサーション

  • 型変換をすること
  • interface型で受け取ると型の判断ができないため

intger型

パッケージ メイン

 「fmt」をインポート

func  do i  interface {}){ 
    //タイプアサーションインターフェイス型だとそのまま利用できないのでintergerへ変換する必要がある
    ii  :=  i int 
    ii  * =  2 
    fmt Println ii 
}

func  main (){ 
    var  i  interface {}  =  10 
    do i 
}

出力

20

文字列型

パッケージ メイン

 「fmt」をインポート

func  do s  interface {}){ 
    ss  :=  s 文字列
    fmt Println ss  +  "!" 
}

func  main (){ 
    do "Mike" 
}
マイク!

スイッチタイプ

パッケージ メイン

 「fmt」をインポート

func  do i  interface {}){ 
    //いろいろな型に対応できるようにできるswitch type 
    switch  v  :=  i type ){ 
    // intgerの場合
    case  int 
        fmt Println v  *  2 
    // stringの場合
    case  string 
        fmt Println v  +  "!" 
  //それ以外の
    デフォルト
        fmt Println "%T%nがわからない"  v 
    } 
}

func  main (){ 
    // string 
    do "Mike" 
    // integer 
    do 10 
    // boolean 
    do true 
}
マイク!
20
%T%nが本当かわかりません

ささら桁

パッケージ メイン

 「fmt」をインポート

タイプ Person  構造体{ 
    名前 文字列
    Age  int 
}

// String()で出力方法を変えられる
func  p  Person  String () string { 
    //名前だけ返す(年齢は
    返さ ない)return fmt sprintf "私の名前は、体積%である"  P 名前
}

func  main () { 
    mike  :=  Person { "Mike"  22 } 
    fmt Println マイク
}
私の名前はマイクです

カスタムエラー

パッケージ メイン

インポート 
    "fmt" 


タイプ UserNotFound  構造体{ 
    ユーザー名 文字列
}

func  e  * UserNotFound  Error () string { 
    return  fmt sprintf "ユーザーが見つかりません:%のV"  E ユーザー名
}

func  myFunc () error { 
    // 
    何かエラーが出たらok  :=  false 
    // okならnil 
    if  ok  { 
        return  nil 
    } 
    // 
    ユーザーが閲覧なかったらreturn  UserNotFound { Username  "Mike" } 
}

func  main () { 
    if  err  :=  myFunc ();  err  !=  nil  { 
        fmt Println err 
    } 
}
ユーザーが見つかりません:Mike

ゴルーチン

  • 並列処理
パッケージ メイン

インポート 
    "fmt" 
    "sync" 


FUNCの ゴルーチンS  ストリング WG  * 同期WaitGroup ){ 
     I  :=  0 ;  i  <  5 ;  i ++ { 
        // time.Sleep(100 * time.Millisecond)
        fmt Println s 
    } 
    wg 完了()
}

func  normal s  string ){ 
    for  i  :=  0 ;  i  <  5 ;  i ++ { 
        // time.Sleep(100 * time.Millisecond)
        fmt Println s 
    } 
}

func  main (){ 
    var  wg  sync WaitGroup 
    wg Add 1 
    //並列処理
    go  goroutine "world"  wg 
    normal "hello" 
    // time.Sleep(2000 * time.Millisecond)
    wg 待機()
}
こんにちは
こんにちは
こんにちは
こんにちは
こんにちは
世界
世界
世界
世界
世界

<スポンサーリンク>

コメントを残す

Allowed tags:  you may use these HTML tags and attributes: <a href="">, <strong>, <em>, <h1>, <h2>, <h3>
Please note:  all comments go through moderation.

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)