内容简介:打卡时间: 1:56
测试代码
- 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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
图解密码技术(第3版)
[日] 结城浩 / 周自恒 / 人民邮电出版社 / 2016-6 / 89.00元
本书以图配文的形式,详细讲解了6种最重要的密码技术:对称密码、公钥密码、单向散列函数、消息认证码、数字签名和伪随机数生成器。 第1部分讲述了密码技术的历史沿革、对称密码、分组密码模式(包括ECB、CBC、CFB、OFB、CTR)、公钥、混合密码系统。第2部分重点介绍了认证方面的内容,涉及单向散列函数、消息认证码、数字签名、证书等。第3部分讲述了密钥、随机数、PGP、SSL/TLS 以及密码技......一起来看看 《图解密码技术(第3版)》 这本书的介绍吧!