Author Archives: yoheimiyamoto

gae サービス名

1つのアプリケーションに複数のサービスを展開することが可能

application: {アプリケーション名}
module: {サービス名}
version: 1
runtime: go
api_version: go1.8

handlers:
- url: /.*
  script: _go_app
  secure: always

配列分割

package main

import (
    "log"
)

// Chunks ...
func Chunks(array []int, n int) (output [][]int) {
    for i := 0; i < len(array); i++ {
        fromIndex := i
        toIndex := i + n
        if toIndex > len(array) {
            toIndex = len(array)
        }
        output = append(output, array[fromIndex:toIndex])
    }
    return
}

func main() {
    array := []int{1, 2, 3, 4, 5}
    output := Chunks(array, 2)
    log.Print(output)
}

代入文複数条件

代入分でも複数条件の処理ができる

func Test() (string, error) {
    return "aa", nil
}
func main() {
    if val, err := Test(); val == "aa" {
        log.Print("ok")
    } else if err != nil {
        log.Print("error!")
    }
}

gae go gin

import (
    "net/http"

    "github.com/gin-gonic/gin"
)

func init() {
    r := gin.Default()
    r.GET("/", handler)
    http.Handle("/", r)
}

func handler(c *gin.Context) {
    code := c.Query("code") // /?code=12345
    c.String(200, code)
}

正規表現 or条件

// どちらのstrにも合致する
str := "111,111,111,111"
// str := "a1234567891,111,111,111"

if ok, _ := regexp.MatchString("(a\\d{10}|\\d+),\\d+,\\d+,\\d+", str); ok {
    log.Print("ok")
}

独自のstring

// MyString ...
type MyString string

func newMyString(str string) (*MyString, error) {
    if ok, _ := regexp.MatchString("\\d{2}:\\d{2}", str); ok {
        s := MyString(str)
        return &s, nil
    }
    return nil, fmt.Errorf("error")
}

func main() {
    str := "11:11"
    s, err := newMyString(str)
    if err != nil {
        log.Print(err)
    }
    log.Print(*s)
}