📜  Golang 中的reflect.Cap()函数示例

📅  最后修改于: 2021-10-24 13:05:03             🧑  作者: Mango

Go 语言提供了运行时反射的内置支持实现,并允许程序在反射包的帮助下操作任意类型的对象。 Golang 中的reflect.Cap()函数用于获取v 的容量。要访问此函数,需要在程序中导入反射包。

下面的例子说明了上述方法在 Golang 中的使用:
示例 1:

C
func (v Value) Cap() int


C
// Golang program to illustrate
// reflect.Cap() Function
 
package main
  
 import (
    "fmt"
    "reflect"
 )
  
func main() {
    c := make(chan int, 1)
    vc := reflect.ValueOf(c)
     
    succeeded := vc.TrySend(reflect.ValueOf(123))
     
    // use of Cap() method
    fmt.Println(succeeded, vc.Len(), vc.Cap())
  
}


输出:

// Golang program to illustrate
// reflect.Cap() Function
 
package main
 
import (
    "fmt"
    "reflect"
)
 
// Main function
func main() {
 
    var val chan string
 
    var strVal reflect.Value = reflect.ValueOf(&val)
 
    indirectStr := reflect.Indirect(strVal)
  
    value := reflect.MakeChan(indirectStr.Type(), 1024)
     
    // use of Cap() method
    fmt.Printf("Type : [%v] \nCapacity : [%v]", value.Kind(), value.Cap())
}

示例 2:

C

true 1 1

输出:

// Golang program to illustrate
// reflect.Cap() Function
 
package main
 
import (
    "fmt"
    "reflect"
)
 
// Main function
func main() {
 
    var val chan string
 
    var strVal reflect.Value = reflect.ValueOf(&val)
 
    indirectStr := reflect.Indirect(strVal)
  
    value := reflect.MakeChan(indirectStr.Type(), 1024)
     
    // use of Cap() method
    fmt.Printf("Type : [%v] \nCapacity : [%v]", value.Kind(), value.Cap())
}