分类 Go 下的文章

关于Go Gin重定向的问题

状态码301、302、303、307、308可以按照是否缓存和重定向方法,两个维度去拆分:举个栗子,用户登录成功时(POST请求),要跳转到首页(GET请求),这时候是POST转GET,因此可以选择301/302/303。在Go Gin中:StatusMultipleChoices = 300 // RFC 7231, 6.4.1StatusMovedPermanently = 301 // RFC 7231, 6.4.2StatusFound = 302 // RFC 7231, 6.4.3StatusSeeOther = 303 ......
<阅读全文>

《Go语言圣经》学习笔记:JSON

JavaScript对象表示法(JSON)是一种用于发送和接收结构化信息的标准协议。1. marshaling将一个Go语言中的数据结构转为JSON的过程叫编组(marshaling)。编组通过调用json.Marshal函数完成:package main import ( "encoding/json" "fmt" "log" ) type Movie struct { Title string Year int `json:"released"` ......
<阅读全文>

Go语言中make和new的区别

Go语言中,new和make都是用来内存(堆上)分配的原语(allocation primitives),但是:make只用于slice、map以及channel的初始化(非零值);new用于类型的内存分配,并且内存置为零。make返回的是引用类型本身;而new返回的是指向类型的指针。简单的说,new只分配内存,make用于slice,map,和channel的初始化。newfunc new(Type) *Type new(T) 函数是一个分配内存的内置函数,为每个类型分配一片内存,并初始化为零值且返回其内存地址。如果它还不是一个变量,不可以可以直接赋值:var v *int * ......
<阅读全文>

《Go语言圣经》学习笔记:结构体(struct)

结构体是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体。每个值称为结构体的成员。下面两个语句声明了一个叫Employee的命名的结构体类型,并且声明了一个Employee类型的变量dilbert:type Employee struct { ID int Name string Address string DoB time.Time Position string Salary int ManagerID int } var dilbert Employee d ......
<阅读全文>

《Go语言圣经》学习笔记:map

1. map的概念了解Map之前,先了解下哈希表。哈希表是一种巧妙并且实用的数据结构。它是一个无序的key/value对的集合,其中所有的key都是不同的,然后通过给定的key可以在常数时间复杂度内检索、更新或删除对应的value。在Go语言中,一个map就是一个哈希表的引用,map类型可以写为map[K]V,其中K和V分别对应key和value。map中所有的key都有相同的类型,所有的value也有着相同的类型,但是key和value之间可以是不同的数据类型。其中K对应的key必须是支持==比较运算符的数据类型,所以map可以通过测试key是否相等来判断是否已经存在。2. 创 ......
<阅读全文>