GO语言反射

反射可以作为了解,不必深入!

反射介绍

Go语音提供了一种机制在运行时更新变量和检查它们的值、调用它们的方法和它们支持的内在操作,但是在编译时并不知道这些变量的具体类型。这种机制被称为反射。反射也可以让我们将类型本身作为第一类的值类型处理。
Go程序在运行期使用reflect包访问程序的反射信息。

reflect包

反射是由 reflect 包提供支持. 它定义了两个重要的类型, Type 和 Value.任意接口值在反射中都可以理解为由reflect.Type和reflect.Value两部分组成,并且reflect包提供了reflect.TypeOf和reflect.ValueOf两个函数来获取任意对象的Value和Type。

TypeOf

reflect.TypeOf()函数可以获得任意值的类型对象(reflect.Type)。

func reflectTYpe(x interface{})  {
    v := reflect.TypeOf(x)
    fmt.Printf("type:%v\n",v)
}

func main() {
    var a int = 10
    reflectTYpe(a)  //type:int
    var b float32 = 1.1
    reflectTYpe(b)  //type:float32
    var c bool = false
    reflectTYpe(c)  //type:bool
}

type name和type kind

在反射中关于类型还划分为两种:类型(Type)和种类(Kind)。种类(Kind)就是指底层的类型.

type myInt int64

func reflectType(x interface{})  {
    t := reflect.TypeOf(x)
    fmt.Printf("type:%v kind:%v\n",t.Name(),t.Kind())
}

func main()  {
    var a int64
    var b *float32
    var c myInt
    var d rune
    reflectType(a)  //type:int64 kind:int64
    reflectType(b)  //type: kind:ptr
    reflectType(c)  //type:myInt kind:int64
    reflectType(d)  //type:int32 kind:int32

    type stu struct {
        name string
        id int64
        age int64
    }
    type person struct {
        do string
    }
    var e = stu{
        name:"ares",
        id:1,
        age:18,
    }
    var f = person{
        do:"study go",
    }
    reflectType(e)  //type:stu kind:struct
    reflectType(f)  //type:person kind:struct

Go语言的反射中像数组、切片、Map、指针等类型的变量,它们的.Name()都是返回空。
在reflect包中定义的Kind类型如下:

type Kind uint
const (
    Invalid Kind = iota  // 非法类型
    Bool                 // 布尔型
    Int                  // 有符号整型
    Int8                 // 有符号8位整型
    Int16                // 有符号16位整型
    Int32                // 有符号32位整型
    Int64                // 有符号64位整型
    Uint                 // 无符号整型
    Uint8                // 无符号8位整型
    Uint16               // 无符号16位整型
    Uint32               // 无符号32位整型
    Uint64               // 无符号64位整型
    Uintptr              // 指针
    Float32              // 单精度浮点数
    Float64              // 双精度浮点数
    Complex64            // 64位复数类型
    Complex128           // 128位复数类型
    Array                // 数组
    Chan                 // 通道
    Func                 // 函数
    Interface            // 接口
    Map                  // 映射
    Ptr                  // 指针
    Slice                // 切片
    String               // 字符串
    Struct               // 结构体
    UnsafePointer        // 底层指针
)

转载于:https://www.cnblogs.com/aresxin/p/GO-yu-yan-fan-she.html

要使用jQuery禁用textarea输入,可以使用`.prop()`方法改变元素的状态,并结合`.val()`方法设置文本区域的值。下面是一个简单的示例说明如何通过jQuery禁用一个textarea: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Disable Textarea with jQuery</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <style> .disable-input { background-color: #ddd; cursor: not-allowed; } </style> </head> <body> <textarea id="myTextarea" rows="4" cols="50">这是未被禁用的 textarea 输入框。</textarea> <button onclick="disableInput()">点击禁止输入</button> <script> function disableInput() { $('#myTextarea').prop('disabled', true).addClass('disable-input'); // 设置 textarea 的值为空字符串,以使其失去焦点并阻止输入。 $('#myTextarea').val(''); } // 添加一个事件监听器来恢复 textarea 的默认状态(如果需要) $(document).ready(function () { // 这里可以根据需要添加恢复功能的代码 }); </script> </body> </html> ``` ### 示例解析 1. **HTML 结构**: - 创建了一个包含`id='myTextarea'`属性的`<textarea>`元素。 - 按钮用于触发禁用操作。 2. **CSS**: - `.disable-input` 类更改了 textarea 的背景颜色并更改为不可交互的样式。 3. **JavaScript**: - `disableInput` 函数: - 使用 `$('#myTextarea').prop('disabled', true)` 禁用 textarea。 - 使用 `$('#myTextarea').val('')` 将 textarea 的值清空,使得用户无法再次输入。 - 并应用 `.addClass('disable-input')` 来修改样式。 4. **事件处理**: - 当页面加载完成时,可以添加额外的代码来控制是否允许再次编辑 textarea。 以上代码展示了如何通过jQuery简单地禁用一个文本区域输入。你可以根据需要调整CSS样式、函数的逻辑或是添加更多的事件处理机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值