Go项目学习
项目一、猜谜游戏
1、rand随机数
nums := make([]int, 8)//切片定义
rand.Seed(time.Now().UnixNano())//设定随机种子
nums[i] = rand.Intn(100)//限定在100以内,即rand.Int()%100
2、数据读入
(1)os.Stdin读取
os.Stdin.Read(buffer[:])//直接读取
br := bufio.NewReader(os.Stdio)//间接读取
(2)bufio缓冲
bufio提供了缓冲区,降低本地磁盘的访问次数,提高效率
s := strings.NewReader("ABCDEFG") //默认4k
br := bufio.NewReader(s)//只能接受io.reader类型!!!或者命令行输入
input, err := reader.ReadString('\n')//读到”\n”结束
(3)scanf scanf:按照给定的格式依次读取数据(包括非法数据),不能换行输入(如果要换行需要在前面加一个scanln吸收掉回车符,就像c语言中的getchar) scan:比scanf高级,依次读取数据,遇到回车会忽略,可以换行输入(如果要先用了scan输入,再用scanf输入的话,需要在中间加一个scanln) scanln:类似scan,但是遇到换行/回车立马结束输入,如果要换行输入必须用多个scanln
//输入一个人的年龄和名字
func main() {
var name string
var age int8
fmt.Scan(&name)
fmt.Scanln()//输入一个人的年龄和名字
fmt.Scanf("%d", &age)
}
//以下为经典循环输入的代码
var a, b int
for {
n, err := fmt.Scan(&a, &b)
if n > 0{
fmt.Println(a,b)
}
if err == io.EOF {
break
}
}
input = strings.Trim(input, "\r\n")//去掉/n
项目二、在线词典
1、HTTP请求_重点!!!
http://curlconverter.com/#go用于生成请求代码
//声明client 参数为默认
client := &http.Client{}
//声明要访问的url
url := "http://www.baidu.com"
//提交请求
reqest, err := http.NewRequest("GET", url, nil)
if err != nil {
panic(err)
}
//处理返回结果
response, _ := client.Do(reqest)
//延迟语句
defer resp.Body.Close()
//读取所有内容
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
附:json序列化
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有良好的可读性和易于解析的特点。在Go语言中,JSON序列化是一项非常常见的任务,本文将介绍Go语言中的JSON序列化。
Go语言内置了对JSON序列化和反序列化的支持,我们可以使用标准库中的encoding/json包来实现。该包提供了两个重要的函数:json.Marshal()和json.Unmarshal(),分别用于将Go语言类型转换为JSON格式的字符串和将JSON格式的字符串转换为Go语言类型。
2、HTTP响应
oktools.net/json2go用于生成相应代码
var dictResponse DictResponse
err = json.Unmarshal(bodyText, &dictResponse)
//将获得的响应对应的结构体输出就可以了,可以使用range遍历输出。