多练练,有感觉了就写实际的东东。

package main

import (
	"fmt"
	"math"
	"os"
	"time"
	"net/http"
	"image"
	"runtime"
)

func say(s string) {
	for i := 0; i < 5; i++ {
		runtime.Gosched()
		fmt.Println(s)
	}
}

type Hello struct{}

func (h Hello) ServeHTTP(
	w http.ResponseWriter,
	r *http.Request) {
	fmt.Fprintf(w, "Hello")
}

type Abser interface {
	Abs() float64
}

type Reader interface {
	Read(b []byte) (n int, err error)
}

type Writer interface {
	Write(b []byte) (n int, err error)
}

type ReadWriter interface {
	Reader
	Writer
}

type MyError struct {
	When time.Time
	What string
}

func (e *MyError) Error() string {
	return fmt.Sprintf("at %v, %s",
		e.When, e.What)
}

func run() error {
	return &MyError{
		time.Now(),
		"it didn't work",
	}
}

type Vertex struct {
	X, Y float64
}

func (v *Vertex) Abs() float64 {
	return math.Sqrt(v.X*v.X + v.Y*v.Y)
}

func (v *Vertex) Scale(f float64) {
	v.X = v.X * f
	v.Y = v.Y *f
}

type MyFloat float64

func (f MyFloat) Abs() float64 {
	if f < 0 {
		return float64(-f)
	}
	return float64(f)
}

func main() {

	var a Abser
	var w Writer

	v := Vertex{3, 4}
	f := MyFloat(-math.Sqrt2)

	v.Scale(5)

	a = f
	fmt.Println(a.Abs())
	a = &v
	fmt.Println(a.Abs())

	w = os.Stdout
	fmt.Fprintf(w, "hello, writer\n")

	if err := run(); err != nil {
		fmt.Println(err)
	}

	m := image.NewRGBA(image.Rect(0, 0, 100, 100))
  fmt.Println(m.Bounds())
  fmt.Println(m.At(0, 0).RGBA())

  go say("world")
  say("hello")

  var h Hello
	http.ListenAndServe("localhost:4446", h)
}

  

最新文章

  1. October 7th 2016 Week 41st Friday
  2. nodejs的require模块及路径
  3. URAL 1200 Horns and Hoofs 枚举
  4. Python自带包建立简单web服务器
  5. overfitting
  6. Fireasy
  7. java传值和通过引用传递
  8. iOS 判断奇偶数
  9. Chrome浏览器扩展开发系列之八:Chrome扩展的数据存储
  10. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(二)用户接口层之RtspClient类及其构造函数
  11. 命令行下执行python找不包的解决方法
  12. 2019.03.25 bzoj4572: [Scoi2016]围棋(轮廓线dp)
  13. got &amp; plt
  14. node.js 学习的一个链接
  15. CentOS上搭建Nginx + Mono 运行 asp.net[转]
  16. caffe源代码分析--Blob类代码研究
  17. 【bzoj2480】Spoj3105 Mod
  18. Python学习---高阶函数的学习
  19. 转:session和cookie以及catch三者的区别
  20. OO5-7次作业总结

热门文章

  1. IE6“无法打开站点,已终止操作”提示的解决
  2. Java中xml2json,json2xml
  3. Epoll模型讲解
  4. 【bzoj3648】环套树+点分治+树状数组
  5. 微信小程序提示框
  6. bzoj 1052 dfs
  7. VS开发工具 因插件问题导致 已停止工作 解决办法
  8. eureka服务端
  9. vim 以16进制进行文件编辑
  10. Tomcat8配置默认项目