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

Blog

<スポンサーリンク>

時間関数

  • RFC3339がよく使われるPostgresqlなどで
パッケージ メイン

インポート 
    "fmt" 
    "time" 


func  main () { 
    t  :=  time ()
    fmt Println t 
    fmt println トンフォーマット時間RFC3339 ))
    FMT println トン()、 T ()、 T デイ()、
        T アワー()、 T ミニッツ()、 T セカンド())
}
2020-07-05 13:33:12.5673789 +0900 JST m = + 0.002000201
2020-07-05T13:33:12 + 09:00
2020年7月5日13 33 12

正規表現

  • WebサーバのバックエンドでURLによって処理を検出する場合などに使う
パッケージ メイン

インポート 
    "fmt" 
    "regexp" 


func  main () { 
    //プログラム内で1回だけ
    とかならまとめて書く// aaaeなどがヒットする
    match  _  :=  regexp MatchString "a([az] +)e"  "apple" 
    fmt Println 一致

    //何度も使いまわす場合、MustCompileで正規表現のみ宣言しておく
    r  :=  regexp MustCompile "a([az] +)e" 
    ms  :=  r MatchString "apple" 
    fmt Println ミリ秒

    // s:= "/ view / test"というようなURLをひっかけたい
    r2  :=  regexp MustCompile "^ /(edit | save | view)/([a-zA-Z0-9] +)$" 
    fs  :=  r2 FindString "/ view / test" 
    fmt Println fs 
    //一部の文字だけ
    取り出し たい場合fss :=  r2 FindStringSubmatch "/ view / test" 
    fmt Println fss  fss [ 0 ]、 fss [ 1 ]、 fss [2 ])
}
本当
本当
/ view / test
[/ view / testビューテスト] / view / testビューテスト

ソート

パッケージ メイン

インポート 
    "fmt" 
    "sort" 


FUNC  メイン() { 
    I  :=  [] INT { 5  3  2  8  7 } 
    S  :=  [] ストリング{ "D"  ""  "F" } 
    P  :=  [] 構造体 { 
        名前 ストリング
        年齢  int 
    } { 
        { "Nancy"  20 }、
        { "Vera"  30 }、
        { "Mike"  40 }、
        {"Bob"  50 }、
    } 
    fmt Println i  s  p 
    ソートInts i 
    ソートStrings s 
    //名前順
    ソートスライスP  FUNC I  J  INT  BOOL  {  リターン P [ I ]  
<  P [ J ]  })
    //年齢順
    ソートスライスP  FUNC I  J  INT  BOOL  {  戻り P [ I ] 年齢 
<  P [ J ] 年齢 })
    FMT Println i  s  p 
}

イオタ

パッケージ メイン

 「fmt」をインポート

//自動的に連番を振ってくれるiotaを入れてあげなくても自動的にインクリメントされる
const  
    c1  =  iota 
    c2 
    c3 


const  
    // 0を使わない場合「_」
    _       =  iota 
    KB  int  =  1  <<  10  *  iota 
    MB 
    GB 


func  main () { 
    fmt Println c1  c2  c3 
    fmt Println KB  MB  GB 
}
0 1 2
1024 1048576 1073741824

環境

  • Webアプリなどでユーザーリクエストの処理が長い場合の続き設定などに使う
パッケージ メイン

インポート 
    "context" 
    "fmt" 
    "time" 


FUNC  longProcess CTX  コンテキストコンテキスト CH  ちゃん  { 
    FMT Println "run" 
    // 2秒の
    時間スリープ2  *  時間
    fmt Println "finish" 
    ch  <-  "result" 
}

func  main () { 
    ch  :=  make chan  string 
    // context timeoutを付け加えられる
    ctx  :=  context 背景()
    // 1秒
    ctx  キャンセル :=  コンテキストWithTimeout CTX  1 * 時間第二
    延期 、キャンセルは()
    に行く longProcessをCTX  CH 

     { 
        選択 { 
        場合を < - CTX 完了()
            fmt println CTX のErr ())
            リターン
        ケース < - CH 
            FMT Println "success" 
            return 
        } 
    } 
}
走る
コンテキストの期限を超えました

ioutil

パッケージ メイン

インポート 
    "fmt" 
    "io / ioutil" 
    "log" 


func  main () { 
    //パケットやファイルを読み込む場合ioutilを使う
    // osとは役割が違う
    content  err  :=  ioutil ReadFile "main.go" 
    if  err  !=  nil  { 
        log 致命的エラー
    } 
    fmt Println 文字列コンテンツ))

     err  :=  ioutilの場合WriteFile "ioutil_temp.go"  content  0666 ); 
 err  !=  nil  { 
        log Fatalln エラー
    } 
}

127.0.0.1:17064でリッスンするAPIサーバー
パッケージメイン

インポート(
    「fmt」
    「io / ioutil」
    "ログ"
)

func main(){
    //パケットやファイルをプロキシ場合ioutilを使う
    // osとは役割が違う
    内容、エラー:= ioutil.ReadFile( "main.go")
    if err!= nil {
        log.Fatal(err)
    }
    fmt.Println(文字列(コンテンツ))

    if err:= ioutil.WriteFile( "ioutil_temp.go"、content、0666); err!= nil {
        log.Fatalln(err)
    }
}
コードで終了するプロセス:0

ファイルが生成される

image.png

パッケージ メイン

インポート 
    "bytes" 
    "fmt" 
    "io / ioutil" 


func  main () { 
    r  :=  bytes NewBuffer ([] byte "abc" ))
    // 
    バッファはReadAllでコンテンツ _  :=  ioutil ReadAll r 
    fmt Println string content ))
}

ABC

ネットワーク系パッケージ

  • URLを読む
パッケージ メイン

インポート 
    「fmt」
    「io / ioutil」
    「net / http」


func  main () { 
    resp  _  :=  http Get "http://example.com" 
    defer  resp ボディclose ()
    body  _  :=  ioutil READALL RESP ボディ
    FMT Println string body ))
}
127.0.0.1:37622でリッスンするAPIサーバー
<!doctype html>
<html>
<ヘッド>
    <title>ドメインの例</ title>

    <meta charset = "utf-8" />
    <meta http-equiv = "Content-type" content = "text / html;
 charset = utf-8" />
    <meta name = "viewport" content = "width = device-width、
initial-scale = 1" />
    <style type = "text / css">
    体 {
        background-color:#f0f0f2;
        マージン:0;
        パディング:0;
        font-family:-apple-system、system-ui、BlinkMacSystemFont、
「Segoe UI」、「Open Sans」、「Helvetica Neue」、Helvetica、Arial、sans-serif;

    }
    div {
        幅:600px;
        マージン:5em auto;
        パディング:2em;
        background-color:#fdfdff;
        border-radius:0.5em;
        ボックスシャドウ:2px 3px 7px 2px rgba(0,0,0,0.02);
    }
    a:link、a:visited {
        色:#38488f;
        text-decoration:なし。
    }
    @media(最大幅:700px){
        div {
            マージン:0自動;
            幅:自動;
        }
    }
    </ style>    
</ head>

<ボディ>
<div>
    <h1>サンプルドメイン</ h1>
    <p>このドメインは、ドキュメントの例示的な例で使用するためのものです。
あなたはこれを使うかもしれません
    事前の調整や許可を求めることなく、文学の領域。</ p>
    <p> <a href="https://www.iana.org/domains/example">詳細情報... </a> </ p>
</ div>
</ body>
</ html>
コードで終了するプロセス:0
パッケージ メイン

インポート 
    "fmt" 
    "io / ioutil" 
    "net / http" 
    "net / url" 


func  main () { 
    // URLが正しいものかチェック
    ベース _  :=  url Parse "http://example.com" 
    // example.comのあとのURLをつけることができる
    参照 _  :=  url 解析"/ test?a = 1&n = 2" 
    エンドポイント :=  ベースResolveReference リファレンス文字列()
    fmt Println エンドポイント
    req  _  :=  http NewRequest "GET"  endpoint  nil 
    // 
    ヘッダーをつけることができるreq ヘッダーAdd "If-None-Match"  "W / xxxx" 
    q  :=  req URL クエリ()
    q "c" "3&%" fmt を追加します。Println q fmt println 
Q エンコード())のreq URL  
    
    
    RawQuery  =  q エンコード()

    var  client  * http クライアント =  http クライアント{} 
    応答 _  :=  クライアントREQ 
    ボディ _  :=  ioutil READALL RESP ボディ
    FMT Println string body ))
}
127.0.0.1:36071でリッスンするAPIサーバー
http://example.com/test?a=1&n=2
map [a:[1] c:[3&%] n:[2]]
a = 1&c = 3%26%25&n = 2
<!doctype html>
<html>
<ヘッド>

アンマーシャル

  • jsonデータをネットワークから受け取る場合などに利用
パッケージ メイン

インポート 
    "encoding / json" 
    "fmt" 


タイプ Person  struct  { 
    // ``で
    囲ってあげると変換してくれるName       string    `json:" name "` 
    Age        int       `json:" age "` 
    NickNames  [] string  `json:" nicknames "` 
}

func  main () { 
    b  :=  [] byte `{" name ":" mike "、" age ":20、" nicknames "
:[" a "、" b "、" c "]}` 
    var  p  Person 
    //ネットワークから入ってきたjsonをStructに自動的に入れてくれる
    if  err  :=  json 非整列化b  p );  err  !=  nil  { 
        fmt Println err 
    } 
    fmt println P 名前 P  p ニックネーム

    //再度変換をかける
    v  _  :=  json 元帥p 
    fmt Println string v ))
}
マイク20 [abc]
{"名前": "マイク"、 "年齢":20、 "ニックネーム":["a"、 "b"、 "c"]}

<スポンサーリンク>

コメントを残す

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

*

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