package main
import s "strings"
import "fmt"
var p = fmt.Println
func main() {
	
	
	p("Contains:  ", s.Contains("test", "es"))
	p("Count:     ", s.Count("test", "t"))
	p("HasPrefix: ", s.HasPrefix("test", "te"))
	p("HasSuffix: ", s.HasSuffix("test", "st"))
	p("Index:     ", s.Index("test", "e"))
	p("Join:      ", s.Join([]string{"a", "b"}, "-"))
	p("Repeat:    ", s.Repeat("a", 5))
	p("Replace:   ", s.Replace("foo", "o", "0", -1))
	p("Replace:   ", s.Replace("foo", "o", "0", 1))
	p("Split:     ", s.Split("a-b-c-d-e", "-"))
	p("ToLower:   ", s.ToLower("TEST"))
	p("ToUpper:   ", s.ToUpper("test"))
	
	p()
	
	p("Len: ", len("hello"))
	p("Char:", "hello"[1])
}
package main
import "fmt"
import "os"
type point struct {
	x, y int
}
func main() {
	
	p := point{1, 2}
	fmt.Printf("%v\n", p)
	
	fmt.Printf("%+v\n", p)
	
	fmt.Printf("%#v\n", p)
	
	fmt.Printf("%T\n", p)
	
	fmt.Printf("%t\n", true)
	
	fmt.Printf("%d\n", 123)
	
	fmt.Printf("%b\n", 14)
	
	fmt.Printf("%c\n", 33)
	
	fmt.Printf("%x\n", 456)
	
	fmt.Printf("%f\n", 78.9)
	
	fmt.Printf("%e\n", 123400000.0)
	fmt.Printf("%E\n", 123400000.0)
	
	fmt.Printf("%s\n", "\"string\"")
	
	fmt.Printf("%q\n", "\"string\"")
	
	fmt.Printf("%x\n", "hex this")
	
	fmt.Printf("%p\n", &p)
	
	
	fmt.Printf("|%6d|%6d|\n", 12, 345)
	
	fmt.Printf("|%6.2f|%6.2f|\n", 1.2, 3.45)
	
	fmt.Printf("|%-6.2f|%-6.2f|\n", 1.2, 3.45)
	
	
	fmt.Printf("|%6s|%6s|\n", "foo", "b")
	
	fmt.Printf("|%-6s|%-6s|\n", "foo", "b")
	
	
	s := fmt.Sprintf("a %s", "string")
	fmt.Println(s)
	
	fmt.Fprintf(os.Stderr, "an %s\n", "error")
}
package main
import "strconv"
import "fmt"
func main() {
	
	
	f, _ := strconv.ParseFloat("1.234", 64)
	fmt.Println(f)
	
	
	i, _ := strconv.ParseInt("123", 0, 64)
	fmt.Println(i)
	
	d, _ := strconv.ParseInt("0x1c8", 0, 64)
	fmt.Println(d)
	
	u, _ := strconv.ParseUint("789", 0, 64)
	fmt.Println(u)
	
	k, _ := strconv.Atoi("135")
	fmt.Println(k)
	
	_, e := strconv.Atoi("wat")
	fmt.Println(e)
}
package main
import "fmt"
import "time"
func main() {
	p := fmt.Println
	
	now := time.Now()
	p(now)
	
	then := time.Date(
		2009, 11, 17, 20, 34, 58, 651387237, time.UTC)
	p(then)
	
	p(then.Year())
	p(then.Month())
	p(then.Day())
	p(then.Hour())
	p(then.Minute())
	p(then.Second())
	p(then.Nanosecond())
	p(then.Location())
	
	p(then.Weekday())
	
	p(then.Before(now))
	p(then.After(now))
	p(then.Equal(now))
	
	diff := now.Sub(then)
	p(diff)
	
	p(diff.Hours())
	p(diff.Minutes())
	p(diff.Seconds())
	p(diff.Nanoseconds())
	
	p(then.Add(diff))
	p(then.Add(-diff))
	p("################")
	
	
	t := time.Now()
	p(t.Format(time.RFC3339))
	
	t1, e := time.Parse(
		time.RFC3339,
		"2012-11-01T22:08:41+00:00")
	p(t1)
	
	
	
	
	p(t.Format("3:04PM"))
	p(t.Format("Mon Jan _2 15:04:05 2006"))
	p(t.Format("2006-01-02T15:04:05.999999-07:00"))
	form := "3 04 PM"
	t2, e := time.Parse(form, "8 41 PM")
	p(t2)
	
	fmt.Printf("%d-%02d-%02dT%02d:%02d:%02d-00:00\n",
		t.Year(), t.Month(), t.Day(),
		t.Hour(), t.Minute(), t.Second())
	
	ansic := "Mon Jan _2 15:04:05 2006"
	_, e = time.Parse(ansic, "8:41PM")
	p(e)
}
package main
import "encoding/json"
import "fmt"
import "os"
type Response1 struct {
	Page   int
	Fruits []string
}
type Response2 struct {
	Page   int      `json:"page"`
	Fruits []string `json:"fruits"`
}
func main() {
	
	bolB, _ := json.Marshal(true)
	fmt.Println(string(bolB))
	intB, _ := json.Marshal(1)
	fmt.Println(string(intB))
	fltB, _ := json.Marshal(2.34)
	fmt.Println(string(fltB))
	strB, _ := json.Marshal("gopher")
	fmt.Println(string(strB))
	
	slcD := []string{"apple", "peach", "pear"}
	slcB, _ := json.Marshal(slcD)
	fmt.Println(string(slcB))
	mapD := map[string]int{"apple": 5, "lettuce": 7}
	mapB, _ := json.Marshal(mapD)
	fmt.Println(string(mapB))
	
	
	res1D := &Response1{
		Page:   1,
		Fruits: []string{"apple", "peach", "pear"}}
	res1B, _ := json.Marshal(res1D)
	fmt.Println(string(res1B))
	
	
	res2D := &Response2{
		Page:   1,
		Fruits: []string{"apple", "peach", "pear"}}
	res2B, _ := json.Marshal(res2D)
	fmt.Println(string(res2B))
	
	
	byt := []byte(`{"num":6.13,"strs":["a","b"]}`)
	
	
	var dat map[string]interface{}
	
	if err := json.Unmarshal(byt, &dat); err != nil {
		panic(err)
	}
	fmt.Println(dat)
	
	
	num := dat["num"].(float64)
	fmt.Println(num)
	
	strs := dat["strs"].([]interface{})
	str1 := strs[0].(string)
	fmt.Println(str1)
	
	
	str := `{"page": 1, "fruits": ["apple", "peach"]}`
	res := Response2{}
	json.Unmarshal([]byte(str), &res)
	fmt.Println(res)
	fmt.Println(res.Fruits[0])
	
	
	enc := json.NewEncoder(os.Stdout)
	d := map[string]int{"apple": 5, "lettuce": 7}
	enc.Encode(d)
}
package main
import (
	"bufio"
	"fmt"
	"io/ioutil"
	"os"
)
func check(e error) {
	if e != nil {
		panic(e)
	}
}
func main() {
	d1 := []byte("hello\ngo\n")
	
	err := ioutil.WriteFile("D:/study/dat1", d1, 0644)
	check(err)
	
	f, err := os.Create("D:/study/dat2")
	check(err)
	
	defer f.Close()
	
	d2 := []byte{115, 111, 109, 101, 10}
	n2, err := f.Write(d2)
	check(err)
	fmt.Printf("wrote %d bytes\n", n2)
	
	n3, err := f.WriteString("writes\n")
	fmt.Printf("wrote %d bytes\n", n3)
	
	f.Sync()
	
	w := bufio.NewWriter(f)
	n4, err := w.WriteString("buffered\n")
	fmt.Printf("wrote %d bytes\n", n4)
	
	w.Flush()
}