小编mx8*_*x88的帖子

Go - void 函数和直接赋值

我在 Go 语言中遇到了一个小问题。我有这个结构:

type Time struct{
    hour,min,sec int
}
Run Code Online (Sandbox Code Playgroud)

以及初始化它的函数:

func init_Time(t Time) (int,int,int){
    t.hour, t.min, t.sec = time.Now().Clock()
    return t.hour, t.min, t.sec
}
Run Code Online (Sandbox Code Playgroud)

main

func main(){
   var Tm Time
   Tm.hour, Tm.min, Tm.sec = init_Time(Tm)
   fmt.Printf("Time: %d:%d:%d", Tm.hour, Tm.min, Tm.sec)
} 
Run Code Online (Sandbox Code Playgroud)

我也导入了time包。它工作得很好,但我有两个问题:

  1. 在我的代码中,为什么在函数中两次对变量(小时,分钟,秒)进行赋值init_Time

    t.小时、t.分钟、t.秒 = time.Now().Clock()

并在main()

Tm.hour, Tm.min, Tm.sec = init_Time(Tm)
Run Code Online (Sandbox Code Playgroud)

有必要还是我的错误?

  1. 为什么如果我init_Time通过将函数转换为 void 函数来修改该函数,它会返回值"Time: 0:0:0"而不是当前时间?

(例子:)

func init_Time(t Time) {
      t.hour, t.min, t.sec = time.Now().Clock()
} …
Run Code Online (Sandbox Code Playgroud)

function void go assign

0
推荐指数
1
解决办法
2万
查看次数

标签 统计

assign ×1

function ×1

go ×1

void ×1