测试代码
- hello.go
package main
import (
"net/http"
"fmt"
//"log"
"os"
"time"
"sort"
"log"
"io/ioutil"
"encoding/json"
)
/**
* 计数器
*/
type Counter struct {
n int
}
/**
* 实现Handler接口中的ServeHTTP方法
*/
func (c *Counter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
c.n++
fmt.Fprintf(w, "counter=%d\n", c.n) //请求返回的数据
}
/**
* json 结构体某字段的首字母为小写则不可导出
*/
type Person struct {
Name string
Age int
}
func main() {
/**
* 简单的处理http请求
*/
counter := new(Counter)
http.Handle("/counter", counter)
err := http.ListenAndServe(":9090", nil)
if err != nil {
log.Fatal("error...", err)
}
path := "tmp/tmp.txt"
testFileIsExist(path)
nums := []int{1, 10, 5, 4}
c := make(chan int)
/**
* 测试管道和goroutine的结合使用
*/
go func() {
time.Sleep(time.Second * 5)
sort.Ints(nums)
fmt.Println("fuck you")
c <- 1
}()
fmt.Println(nums)
printInfo()
<-c //阻塞作用,直到有数据可读取
/**
* json对象序列化
*/
p := &Person{}
p.Name = "jack"
p.Age = 10
pdata, _ := json.Marshal(p)
fmt.Println(string(pdata))
/**
* json对象的反序列化
*/
testUrl := "https://api.douban.com/v2/movie/top250?start=0&count=10"
resp, err := http.Get(testUrl)
Check(err)
body := resp.Body
defer body.Close()
data, _ := ioutil.ReadAll(body)
entity := DoubanEntity{}
json.Unmarshal(data, &entity)
fmt.Println(entity.Count)
}
type DoubanEntity struct {
Count int
Total int
}
func Check(err error) {
if err!=nil {
panic(err)
}
}
func printInfo() {
for i := 10; i < 100; i++ {
fmt.Println("i=", i)
}
}
/**
*测试文件是否存在
*/
func testFileIsExist(path string) {
if _, err := os.Stat(path); os.IsNotExist(err) {
fmt.Printf("%s does not exist\n", path)
} else {
fmt.Printf("%s is exist.\n", path)
}
}
总结
- 网络请求,json,文件操作
打卡时间: 1:56
有疑问加站长微信联系(非本文作者)