【问题标题】:What is the difference between the types "string" and "func() string"?“string”和“func() string”类型有什么区别?
【发布时间】:2019-06-11 22:36:35
【问题描述】:

我对一般编程很陌生,更不用说 Go 了……目前我一直在尝试通过 HTTP 提供一些内容,[出于原因]我有一个字符串,我想存储在一个单独的包中,并提供它通过函数调用回到我的主项目。 但是我收到一个错误(以各种形式,取决于我如何更改代码):

“不匹配的类型 string 和 func() string”

这里是“数据”包

package encodedjs
var base64EncodedJS string
func ReadEncodedJS() string {
 return base64EncodedJS
}
func init() {
 base64EncodedJS = "data:text/javascript;base64,largestring_blah_blah_blah=="
}

...然后是调用它的主代码

package main
import ( 
 "./encodedjs" 
)
func main() {
 js := "some text to simply show one way I've tried" + encodedjs.ReadEncodedJS
}

【问题讨论】:

  • 考虑参加Tour of Go 以获得 Go 语言和语法的基础。这不会花很长时间,并且对理解基础知识有很大帮助。
  • 我忘记了 ()

标签: string function go types


【解决方案1】:

encodedjs.ReadEncodedJSqualified identifier 只是表示函数,如果按原样使用,它只是一个函数值(例如可以分配给相同函数类型的变量)。

如果您想调用它并使用它的返回值,请使用括号,例如encodedjs.ReadEncodedJS()。这在Spec: Calls中有详细说明。

既然你想连接string 值,你必须调用它:

js := "some text to simply show one way I've tried" + encodedjs.ReadEncodedJS()

【讨论】:

  • 谢谢,我很恼火我忘记了这一点,我的意思是我在这方面工作了很长时间,没有任何点击在我的脑海中......它就在其他正确的旁边函数调用就在我面前。
【解决方案2】:

stringstringfunc() string 是返回 string 的函数。在我看来,encodedjs.ReadEncodedJS 是后者,要获得它返回的string,你可以写encodedjs.ReadEncodedJS()

【讨论】:

  • 谢谢,我很恼火我忘记了这一点,我的意思是我在这方面工作了很长时间,没有任何点击在我的脑海中......它就在其他正确的旁边函数调用就在我面前。
猜你喜欢
  • 2011-10-12
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 2016-03-26
  • 2018-10-11
  • 2016-11-09
相关资源
最近更新 更多