Golang中没有返回值函数

时间:2018-02-23 13:46:14

标签: function go

当我读“小小的”书时,我发现它建议写一个没有任何返回值的函数。所以我继续测试该功能,但程序不会编译并给我这个“...用作值”错误。谁知道这里发生了什么?

package main

import (
    "fmt"
)

func log(message string) {
    fmt.Println(message)
}

func main() {
    msg := log("just a message")
    fmt.Println(msg)
}

我知道这个功能很简单(也许这个问题也很愚蠢)。但我很想知道这种类型的功能在Go中是否合法?

3 个答案:

答案 0 :(得分:2)

不返回任何内容的函数完全有效:

func log(message string) {
    // .. do stuff
}

但是将它视为返回某些东西是无效的:

msg := log("foo") // what do you expect to be assigned to msg? log() returns nothing!

答案 1 :(得分:1)

此处使用的功能

func log(message string){
    fmt.Println(message)
}

实际上什么都不返回。

但是你将它分配给变量是不正确的。因为函数什么都不返回。

msg := log("just a message")

这就是错误

的原因
  

..用作值

你可以直接打电话。

func main() {
    log("just a message")
}

查看go playground

答案 2 :(得分:1)

你的log()函数没有返回任何内容,所以你不能将结果赋给变量(msg:= ...)

import(
  "fmt"
   )

func log(message string){
  fmt.Println(message)
}

func main(){
  log("just a message")
}