Open dave-wind opened 8 months ago
# 首先 query是url.Values类型 == map[string][]string query := c.Request.URL.Query() // range 对象和切片 循环区别 1. 当我们for循环 一个 map 会获取 key 和 item; 2. 当我们for循环 一个 slice 会获取 index 和 item;
标准答案 type GoObject map[string]interface{}
标准答案
type GoObject map[string]interface{}
func main() {
R := gin.Default() R.GET("/url", func(c *gin.Context) { query := c.Request.URL.Query() fmt.Println("query-------", query) // map[age:[20] demo:[1,2,3,4] name:[123]] fmt.Println("Encode------", query.Encode()) // age=20&demo=1%2C2%2C3%2C4&name=123 fmt.Println("RawQuery----", c.Request.URL.RawQuery) // name=123&age=20&demo=1,2,3,4 /* * query like * originalMap := map[string][]string { * "key1": {"value1", "value2"}, * key2": {"value3", "value4"}, * } */ // 方式1 字面量声明在创建 会自动分配大小 // 这里 response 还是 一个指针对象;使用值的时候需要 反引用 var response = &GoObject{ "message": "pong", } // 方式 make创建 一个 空对象 然后后续可以动态添加key var response2 = make(GoObject) for key, value := range query { // 反引用获取值 在取key 赋值 (*response)[key] = value[0] } c.JSON(200, response) }) R.Run(":8083")
}
> make 知识点 ```go make 函数主要 定义 引用类型;make([]T, length, capacity T) 1.对象 对象的大小会自动分配 与数组不同 2.定义slice切片 T 是切片中元素的类型。 length 是切片的初始长度,即切片中包含的元素数量。 capacity 是切片的初始容量,即底层数组可以容纳的元素数量。容量总是大于或等于长度 var arr = make([]string, 3) arr = []string{"key1", "value1", "value2"} 3.定义 通道:
Go map
func main() {
}