Go基础学习一 | 青训营

72 阅读2分钟

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遍历输出。