package main
import (
	"fmt"
	"os"
	"strconv"
)
type point struct {
	x, y int
}
var logf = fmt.Printf
var log = fmt.Println
func main() {
	p := point{1, 2}
	logf("struct1 %v\n", p) 
	logf("struct2 %+v\n", p) 
	logf("struct3 %#v\n", p) 
	
	logf("type %T\n", p)
	logf("bool %t\n", true)
	logf("bin %d\n", 123)
	logf("char %c\n", 33)
	logf("hex %x\n", 456)
	
	logf("float1 %f\n", 78.9)
	logf("float2 %e\n", 123400000.0)
	logf("float3 %E\n", 123400000.0)
	logf("str1 %s\n", "\"string\"")
	logf("str2 %q\n", "\"string\"") 
	logf("str3 %x\n", "\"string\" hex this") 
	
	logf("pointer %p\n", &p) 
	logf("width1: |%6d|%6d|\n", 12, 456)
	logf("width2: |%6.2f|%6.2f|\n", 1.2, 4.52226)
	logf("width3: |%-6.2f|%-6.2f|\n", 1.2, 4.56) 
	logf("width4: |%6s|%6s|\n", "foo", "b")
	logf("width5: |%-6s|%-6s|\n", "foo", "b")
	s := fmt.Sprintf("Sprintf: a %s", "string") 
	fmt.Println(s) 
	fmt.Fprintf(os.Stderr, "io: an %s\n", "error") 
	f, _ := strconv.ParseFloat("1.234", 64)
	i, _ := strconv.ParseInt("1234", 0, 64)
	d, _ := strconv.ParseInt("0x1c8", 0, 64)
	u, _ := strconv.ParseUint("-789", 0, 64)
	u2, _ := strconv.ParseUint("789", 0, 64)
	k, _ := strconv.Atoi("135")
	k2, _ := strconv.Atoi("135")
	_, e := strconv.Atoi("wat")
	log(f)
	log(i)
	log(d)
	log(u)
	log(u2)
	log(k)
	log(k2)
	log(e)
}