当前位置: 首页 > 面试题库 >

如何获取变量的内存大小?

陆宏壮
2023-03-14
问题内容

有谁知道如何获得变量(内存大小intstring[]struct等),并打印出来?可能吗?

var i int = 1
//I want to get something like this:
fmt.Println("Size of i is: %?", i)
//Also, it would be nice if I could store the value into a string

问题答案:

您可以为此使用unsafe.Sizeof函数。它返回以字节为单位的大小,该大小由您传递给它的值占据。这是一个工作示例:

package main

import "fmt"
import "unsafe"

func main() {
    a := int(123)
    b := int64(123)
    c := "foo"
    d := struct {
        FieldA float32
        FieldB string
    }{0, "bar"}

    fmt.Printf("a: %T, %d\n", a, unsafe.Sizeof(a))
    fmt.Printf("b: %T, %d\n", b, unsafe.Sizeof(b))
    fmt.Printf("c: %T, %d\n", c, unsafe.Sizeof(c))
    fmt.Printf("d: %T, %d\n", d, unsafe.Sizeof(d))
}

请注意,某些平台明确禁止使用不安全,因为它是不安全的。这曾经包括AppEngine。不知道今天是否仍然如此,但我想是这样。

正如@Timur
Fayzrakhmanov指出的那样,reflect.TypeOf(variable).Size()它将为您提供相同的信息。对于reflect包装,与包装相同unsafe。即:某些平台可能不允许其使用。



 类似资料:
  • 问题内容: 我对和的内存成本感到好奇,因此我编写了一个程序来比较大小。我通过获得内存大小,但是显然这是错误的,因为当我更改大小时,输出是相同的。 问题答案: 并且仅返回传递值的大小,而无需递归遍历数据结构和添加指针值的大小。 slice是相对简单的结构:,并且由于我们知道它引用了后备数组,因此我们可以轻松地“手动”计算其大小,例如: 输出(在Go Playground上尝试): 地图是更复杂的数据

  • 问题内容: 在Linux中,如何获取URL并在shell脚本的变量中获取其内容? 问题答案: 您可以使用命令下载页面并将其读取为变量,如下所示: 我们使用的选项允许我们指定将页面内容转储到的文件的名称。我们指定将转储放入标准输出并将其收集到变量中。您可以添加安静选项以关闭wget输出。 您还可以为此使用curl命令: 我们需要使用该选项,因为我们请求的页面可能已经移动。在这种情况下,我们需要从新位

  • 问题内容: 假设我们有一个变量: 使用该方法可以在训练过程中更新此变量。 获取变量当前值的最佳方法是什么? 我知道我们可以使用这个: 但是我担心这会触发整个操作链。 在Theano,您可以做 我正在TensorFlow中寻找相同的东西。 问题答案: 通常,将仅评估计算所需的节点,而不会评估其他节点,因此,如果要检查变量的值,它应该相对便宜。 看看这个很棒的答案http://codingdict.c

  • 问题内容: 有没有办法获取所有当前在javascript范围内的变量? 问题答案: 否。“范围内”变量由“作用域链”确定,该变量无法通过编程方式访问。 有关详细信息(很多),请查看ECMAScript(JavaScript)规范。这是指向官方页面的链接,您可以在其中下载规范规范(PDF),而这是指向官方的可链接HTML版本的链接。 根据您对Camsoft的评论进行更新 事件函数作用 域中 的变量取

  • 问题内容: 我想知道一个类的某些成员变量的注释,我用来对一个类进行自省,并使用来查找特定的属性,并使用Class 来获取该属性的Class。 但是我不知道如何将注释添加到成员变量中? 我尝试了,但是都返回了Class的注释,而不是我想要的。例如 : 我想获取地址的注释:@Column,而不是类地址的注释(@Entity,@Table,@Cache)。如何实现呢?谢谢。 问题答案: 另请参阅:htt

  • 问题内容: 我想将内容放入javascript全局定义的变量中,我使用ajax call获得的内容。 http://pastebin.com/TqiJx3PA 感谢您的任何建议 问题答案: pastebin代码已经做到了。我猜您实际上面临的问题是存在的,因为您的ajax调用是 异步的 ,这意味着您正在(异步)发出ajax请求,并立即尝试访问全局变量中的值-但它尚未尚未设定。 解决方案是在回调中执行