美文网首页
go的web参数校验(通用)及变量类型, 变量值与指针的思考

go的web参数校验(通用)及变量类型, 变量值与指针的思考

作者: fllare | 来源:发表于2020-06-12 11:04 被阅读0次

楼主刚开始学习使用go开发web项目, 在参考https://www.jianshu.com/p/21376f5557d5?from=timeline&isappinstalled=0
文章的思路后, 发现无法检查子结构体.故进行了修改, 思路:
1.发现字段是子结构体之后, 递归调用检查函数, 返回的结果err为nil则继续检查, 否则返回错误.
2.但是, 做了第1步后执行不成功, 因为reflect.valueof函数需要的是一个结构体的地址, 获取到子结构体已经是一个interface的变量了, 取地址的类型为*interface.故做如下修改:定义子结构体时, 类型定义为子结构的地址类型.

有此引发了思考, 如下测试, 在go中:
1.变量有变量的类型
2.变量的值有值的类型.
3.变量的地址也有类型.如下对interface变量取地址和Car2的变量取地址, 两个地址仍然有自己的类型.

package main

import "fmt"

type Car1 struct {
    S string
}
type Car2 struct {
    A Car1
}

func main() {
    a := Car2{Car1{"ss"}}

    var b interface{}
    b = a
    
    c, _ := b.(Car2)
    fmt.Println(&a, &b, &c)
    fmt.Printf("%p %p", &a, &b)
}
image.png

相关文章

  • go的web参数校验(通用)及变量类型, 变量值与指针的思考

    楼主刚开始学习使用go开发web项目, 在参考https://www.jianshu.com/p/21376f55...

  • web 通用型漏洞学习

    web通用型漏洞学习 变量覆盖 原理:把自定义的参数值 替换为变量的参数值,从而覆盖了变量值,产生漏洞。 常见的...

  • 4 Go特种类型:值、指针、引用及nil

    一、值、指针类型及引用类型 在Go中,一个变量持有的内容无非三种:值类型、指针类型及引用类型。值类型和指针类型可以...

  • Go之旅-变量

    Go语言变量有固定的数据类型,决定了变量内存的长度和存储格式。Go变量只能修改变量值,不能改变变量的数据类型。Go...

  • go env

    go env命令用于打印查看Go开发包的环境配置信息 Go通用环境信息 环境变量变量值描述GOARCHamd64目...

  • unsafe包

    go语言的指针类型分为三种:(1)普通指针类型:*类型,用于存储地址,不能进行指针运算(2)通用指针类型:用于转换...

  • Go语言学习笔记(五)-其他类型(指针、结构体、、)

    指针 在Go语言中也存在指针,且指针保存了变量的地址,初始值为nil。定义指针与定义变量相似,不同的是在类型前面指...

  • C++指针类型间强制转换

    指针变量及不同指针类型的含义 指针变量指针变量,本质上是一个变量,只是它是存放地址的变量,指针的类型代表的是它所指...

  • JS回顾变量、作用域、内存问题

    基本类型和引用类型的值属性的动态复制变量值传递参数检测类型 执行环境与作用域延长作用域链没有块级作用域声明变量提升...

  • 【技术】Golang初探——指针、数组、map、函数

    指针 Go 具有指针。 指针保存了变量的内存地址。类型 *T 是指向类型 T 的值的指针。其零值是 nil。 '*...

网友评论

      本文标题:go的web参数校验(通用)及变量类型, 变量值与指针的思考

      本文链接:https://www.haomeiwen.com/subject/ipkgtktx.html