Golang return 函数返回值的问题
这个问题源于看了这篇文章:https://blog.csdn.net/u010824081/article/details/77960209
首先,看一个函数返回值的问题
<pre class="has"><code class="language-Go">package main import ( "fmt" ) func main() { fmt.Println(test()) } func test() (a int) { a = 1 fmt.Println("can i see ?") return }</code></pre>上面这个函数输出的是 :
<pre class="has"><code class="language-Go">can i see ? 1</code></pre> <pre class="has"><code class="language-Go">package main import ( "fmt" ) func main() { fmt.Println(test()) } func test() (a int) { a = 1 fmt.Println("can i see ?") return 2 }</code></pre>上面这个函数输出的是:
<pre class="has"><code class="language-Go">can i see ? 2</code></pre>当return后面为空是,函数声明时的 (a int) 会把 a 作为返回值,当 return 不为空时,会把 return 后面的值作为返回值
再看文章提到的那个例子:
<pre class="has"><code class="language-Go">func Test(person string) (work func() string) { work = func() string { return (person " is working") } return } func main() { p := Test("Sergey") // p 得到的是一个匿名函数,因为(work func() string) 指明Test函数返回一个work的匿名函数,且 return 后面为空 fmt.Println(p) // 输出结果:0x10b2790,这里输出的是work匿名函数的一个地址 fmt.Println(p()) // 输出结果:Sergey is working,这里执行了 work 函数 }</code></pre>到此这篇关于“Golang return 函数返回值的问题”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!
您可能感兴趣的文章:
Golang return 函数返回值的问题
golang 返回值问题
有关php递归函数返回值的使用方法
Golang中defer关键字实现原理
golang中的defer panic recover
golang中函数,方法和接口的浅析(函数篇)
【go系列4】golang 函数命名返回值
Golang面试题总结
golang面试题分析01_defer和函数返回值
Go 语言函数