问题内容: 这是允许的: 但这不是: 为什么不?为什么不能在没有类型的情况下将函数外部的短变量声明视为常规声明?只是为了简化解析? 问题答案: 据伊恩·兰斯·泰勒(Ian Lance Taylor)在公开宣布后不久在此主题中提到: 在顶层,每个声明都以关键字开头。这简化了解析。
问题内容: 我在中创建一个变量,并根据条件更改值。但是值的范围仅保留在以下条件内: 在if条件内,我得到正确的值,但在外面。如何在外界条件下使用?有人可以帮我吗? 问题答案: Go 1.11添加了对更改模板变量值的支持。要定义变量,请使用: 要更改其值,请使用Assignment : 如果变量在块外创建但在块内更改,则更改将在块后可见。 像这样测试: 输出为(在Go Playground上尝试):
问题内容: 有谁知道如何获得变量(内存大小,,等),并打印出来?可能吗? 问题答案: 您可以为此使用unsafe.Sizeof函数。它返回以字节为单位的大小,该大小由您传递给它的值占据。这是一个工作示例: 请注意,某些平台明确禁止使用不安全,因为它是不安全的。这曾经包括AppEngine。不知道今天是否仍然如此,但我想是这样。 正如@Timur Fayzrakhmanov指出的那样,它将为您提供相
问题内容: 是否可以使用相同的值替换格式化字符串中的所有变量? 就像是: 会回来的 问题答案: 有可能,但是必须修改格式字符串,必须使用 显式参数索引 : 显式参数索引: 在Printf,Sprintf和Fprintf中,默认行为是为每个格式化动词格式化在调用中传递的连续参数。但是,动词前的符号[n]表示第n个单索引参数将被格式化。宽度或精度的’*’之前的相同符号选择保存该值的参数索引。在处理了带
问题内容: 在Python中,可以分割字符串并将其分配给变量: 但在Go中似乎无效: 问题: 如何在一个步骤中拆分字符串并分配值? 问题答案: 例如两个步骤 输出: 例如一个步骤 输出:
问题内容: 当切片时,如果需要可以将切片放大。由于规范未指定算法,因此对此感到很好奇。 我尝试在Go源代码中找到实现,但是找不到它。 谁能解释扩大切片的指定算法?容量是否总是增加一倍?或任何人都可以提供的源代码位置吗?我可以自己检查。 问题答案: 可以在其中找到负责切片的代码。 截至2014-2020年,已实施的规则为: 如果追加到切片将使其长度增加两倍以上,则将新容量设置为新长度。 否则,如果当
问题内容: 我是golang的新手,我编写了一个测试io包的程序: 编译错误为“已声明并且未使用err”。但是我想我已经使用err来声明。为什么编译器会输出此错误? 问题答案: for 的内部正在遮盖for的外部,并且未被使用(for的内部)。发生这种情况的原因是,您正在使用简短的变量声明(与运算符一起使用),该声明声明了一个新变量,该新变量遮盖了for外部声明的变量。
问题内容: 我几乎没有这样声明的C函数 我想将这些作为一个Go函数公开 所以我需要能够在运行时检查 参数 类型。我该怎么做,这是个好主意吗(如果不是,在这种情况下,什么是好的做法)? 问题答案: 在此处查看类型断言: http://golang.org/ref/spec#Type_assertions 我只断言一个明智的类型(字符串,uint64)等,并使其尽可能宽松,最后执行到本机类型的转换。
问题内容: 这里发生了什么事? 它抛出一个错误,说 我正在做的是将值重新分配给一个已经声明的变量。 问题答案: 将新值分配给现有变量时,请从第二条语句中删除。 当您像在第一个语句中那样第一次执行简短声明和赋值时使用。
问题内容: 基本上,我需要输出,其中包括可用空间和卷的总大小。该解决方案需要在Windows,Linux和Mac上运行并使用Go编写。 我浏览了和Go文档,但没有发现任何东西。在Windows上,即使命令行实用程序也很笨拙()或需要提升的特权()。当然有一种方法我还没有发现… 更新: 根据nemo的回答和邀请,我提供了一个跨平台的Go软件包来执行此操作。 问题答案: 在POSIX系统上,可以使用。
问题内容: 如何在其他.go包/文件中的main.go中访问已声明/初始化的变量?不断告诉我变量未定义(我知道全局变量不好,但这只是用作时间戳记) 在main.go中 尝试访问其他.go文件中的StartTime,但保持未定义StartTime 问题答案: 我将改为“注入” starttime变量,否则在软件包之间会有循环依赖关系。 main.go otherpackage.go
问题内容: 我正在使用Go 1.9.2创建一个应用,并且试图在构建过程中使用选项向其添加版本字符串变量。 我已经通过使用:在包中设置了一个变量,但是我真正需要的是在包中而不是在其中设置变量。这可能吗? 这是我的构建命令: 问题答案: 引用命令链接文档: 因此,它可以用于任何包装,而不仅仅是包装。但是您必须指定完整的 导入路径 ,而不仅仅是软件包名称。 例如,如果您的软件包位于,则使用以下命令:
问题内容: 我想将地图限制为最多X个字节。似乎没有直接的方法可以计算映射的字节长度。 package具有不错的功能,但仅适用于切片或“固定值”,不适用于地图。 我可以尝试从地图中获取所有键/值对,推断它们的类型(如果为)并计算长度- 但这既麻烦又可能不正确(因为这会排除地图的“内部”运行成本)本身-管理指向元素的指针等)。 有建议的方式吗?最好是一个代码示例。 问题答案: 这是地图标题的定义: 计
问题内容: 在Go中精确测量持续时间的正确方法是什么?大多数应用程序仅使用标准时间包和以下方法: 但是,返回当前系统时间,这导致两个缺陷: 如果在测量过程中更改了系统时间(例如,由于 时区更改 (DST)或 leap秒 ),则所产生的持续时间也是错误的。 系统时间可能故意比实时时间变慢或变慢。当操作系统将内部时钟与NTP时间服务器同步时,通常会发生这种情况(每小时可能发生几次!) 从MSDN: [
问题内容: 以下GO程序给出了错误: 程序: 为什么我不能使用in类型? 问题答案: 更换 通过 引用规范: 当表达式或赋值中混合了不同的数字类型时,需要进行转换。例如,即使int32和int在特定体系结构上可能具有相同的大小,它们也不是同一类型。 Go使用静态类型输入,不会自动在数字类型之间转换。原因可能是为了避免某些错误。例如,应该产生什么值和什么类型?结果应该是吗? ? ?在Go中,这不是问