Author Archives: yoheimiyamoto

template

{{define "content"}}
<form action="/forms/{{.AppID}}/{{.RecordID}}/update" method="post">
  {{range .Fields}}
    <h3>{{.Label}}</h3>
    <input type="text" name="{{.Code}}" value="{{index $.Record.Fields .Code}}"> // Record.Fields[.Code]の意味
  {{end}}
  <br>
  <input type="submit" name="送信">
</form>
{{end}}

参考

http://golang-jp.org/pkg/text/template/

最初の引数を続く引数でインデックスした結果を返します。
例えば”index x 1 2 3″はGoの文法では x[1][2][3]となります。
インデックスされる値はマップ、スライス、配列である必要があります。

template

{{define "content"}}
<form action="/forms/{{.AppID}}" method="post">
  {{range .Fields}}
  {{if eq .Code "name"}}
    <h3>{{.Label}}</h3>
    <input type="text" name="{{.Code}}">
  {{end}}
  {{end}}
  <input type="submit" name="送信">
</form>
{{end}}

interface cast

func Test(input interface{}) {
    switch input.(type) {
    case string:
        println("string")
    case int:
        println("int")
        myint, ok := input.(int)
        if !ok {
            println("error")
        }
        str := strconv.Itoa(myint)
        fmt.Printf("int: %s", str)
    }
}

func main() {
    Test(1) // int: 1 と返る
}

構造体 定義

String, Int

// 定義
type MyString string
type MyInt int

// イニシャライズ
myStr := MyString("yohei")
myInt := MyInt(1)

// 呼び出し
fmt.Println(myStr) // yoheiと出力
fmt.Println(myInt) // 1 と出力

Struct

// 定義
type User struct {
    Name string
}

// イニシャライズ
user := User{"yohei"}

// 呼び出し
fmt.Println(user.Name)

要素の結合

package main

import (
    "fmt"
)

func main() {
    var myint uint64
    var mystr string
    myint = 1
    mystr = "hello"
    str := fmt.Sprintf("myint: %v mystr: %s", myint, mystr)
    fmt.Println(str)
}

URL

コード

package main

import (
    "fmt"
    "net/url"
)

func main() {
    u := url.URL{
        Scheme: "https",
        Host:   "google.com",
        Path:   "records",
        RawQuery: "app=1",
    }
    fmt.Println(u.String())
}

結果

https://google.com/records?app=1

Kintone API Go

ローカル

func handler(w http.ResponseWriter, r *http.Request) {
    jar, _ := cookiejar.New(nil)
    client := &http.Client{Jar: jar}

    url := {URL}
    jsonStr := []byte(`{"app":"1","id":"7"}`)
    req, err := http.NewRequest("GET", url, bytes.NewBuffer(jsonStr))
    req.Header.Set("Content-Type", "application/json")
    apiToken := {APIトークン}
    req.Header.Set("X-Cybozu-API-Token", apiToken)

    res, err := client.Do(req)
    if err != nil {
        log.Println(err.Error())
    }
    buf := new(bytes.Buffer)
    buf.ReadFrom(res.Body)
    s := buf.String()
    log.Println(s)
}

app engine

func handler(w http.ResponseWriter, req *http.Request) {
    ctx := appengine.NewContext(req)
    client := urlfetch.Client(ctx)

    url := {URL}
    jsonStr := []byte(`{"app":"1","id":"7"}`)
    req, err := http.NewRequest("GET", url, bytes.NewBuffer(jsonStr))
    req.Header.Set("Content-Type", "application/json")
    apiToken := {APIトークン}
    req.Header.Set("X-Cybozu-API-Token", apiToken)

    res, err := client.Do(req)
    if err != nil {
        log.Debugf(ctx, err.Error())
    }
    buf := new(bytes.Buffer)
    buf.ReadFrom(res.Body)
    s := buf.String()
    log.Debugf(ctx, s)
}