#ループを一定期間休む
Goで一定周期で何かを行う方法
import(“time”)
time.Sleep(3 * time.Second)
#乱数を生成する
Goでrandを使うときは忘れずにSeedを設定しないといけない
Goにはcrypto/randというセキュアな乱数生成器
seed, _ := crand.Int(crand.Reader, big.NewInt(math.MaxInt64))
rand.Seed(seed.Int64())
fmt.Println(rand.Int63())
#標準入力から変数の値を受け取る
goでfmt.Scanする際の注意点
#Scan関数
func Scan(a ...interface{}) (n int, err os.Error)
fmt.Scan(&a, &b)
fmt.Println(a, b)
#文字列の検索
Go言語_文字列操作
fmtパッケージ
str := "The Go Programming Language"
// 文字列が含まれるか判定する。
if strings.Contains(str, "Go") {
fmt.Println("Contains return true!")
}
// 開始文字列を判定する。
if strings.HasPrefix(str, "Th") {
fmt.Println("HasPrefix return true!")
}
// 終端文字列を判定する。
if strings.HasSuffix(str, "age") {
fmt.Println("HasSuffix return true!")
}
// 文字列から特定の部分文字列を検索する。
// 先頭から検索して見つかった文字列位置を返す。
// 見つからない場合は -1 を返す。
if idx := strings.Index(str, "Program"); idx != -1 {
fmt.Printf("Found. (index = %d)\n", idx)
}
// 末尾から検索して見つかった文字列位置を返す。
// 見つからない場合は -1 を返す。
if idx := strings.LastIndex(str, "a"); idx != -1 {
fmt.Printf("Found. (index = %d)\n", idx)
}
request.goでUUID=1234567890(乱数)を標準出力
scan.goでUUID=1234567890(乱数)を検出して数値の抽出して標準出力する
request.go
package main
import(
"fmt"
"time"
crand "crypto/rand"
"math"
"math/rand"
"math/big"
)
$ vi request.go
$ go build request.go
$ vi scan.go
$ go build scan.go
$ ./request | ./scan
2550519028152033468
1331746663370969294
func main() {
for {
seed, _ := crand.Int(crand.Reader, big.NewInt(math.MaxInt64))
rand.Seed(seed.Int64())
s :=rand.Int63()
fmt.Printf("UUID=%v\n",s)
time.Sleep(1 * time.Second)
}
}
scan.go
package main
import (
"fmt"
"strings"
)
func main() {
var a string
dst := ""
for {
fmt.Scan(&a)
if strings.Contains(a,"UUID"){
dst = strings.Replace(a, "UUID=", "", 1)
fmt.Println(dst)
} else {
fmt.Printf("none\n")
}
}
}