Go语言练习之方法,接口,并发
2024-08-31 08:56:08
多练练,有感觉了就写实际的东东。
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) }
最新文章
- October 7th 2016 Week 41st Friday
- nodejs的require模块及路径
- URAL 1200 Horns and Hoofs 枚举
- Python自带包建立简单web服务器
- overfitting
- Fireasy
- java传值和通过引用传递
- iOS 判断奇偶数
- Chrome浏览器扩展开发系列之八:Chrome扩展的数据存储
- 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(二)用户接口层之RtspClient类及其构造函数
- 命令行下执行python找不包的解决方法
- 2019.03.25 bzoj4572: [Scoi2016]围棋(轮廓线dp)
- got &; plt
- node.js 学习的一个链接
- CentOS上搭建Nginx + Mono 运行 asp.net[转]
- caffe源代码分析--Blob类代码研究
- 【bzoj2480】Spoj3105 Mod
- Python学习---高阶函数的学习
- 转:session和cookie以及catch三者的区别
- OO5-7次作业总结