Несколько инициализаторов в операторе Go if - PullRequest
8 голосов
/ 12 ноября 2009

Только что открыл Go, и мне пока очень любопытно. Я знаю, что я просто ленив, но я хочу знать, возможно ли инициализировать несколько переменных в операторе if. Я знаю, что возможно следующее:

if x := 5; x == 5 {
    fmt.Printf("Whee!\n")
}

Я пробовал следующее:

if x := 5, y := 38; x == 5 {
    fmt.Printf("Whee! %d\n", y)
}

if x := 5 && y := 38; x == 5 {
    fmt.Printf("Whee! %d\n", y)
}

Но ни один не работал. Я просмотрел документацию на веб-сайте Go, так что я что-то пропустил или это просто невозможно?

Ответы [ 2 ]

14 голосов
/ 12 ноября 2009

Вот как это сделать:

package main

import (
    "fmt"
)

func main() {
    if x, y := 5, 38; x == 5 {
        fmt.Printf("Whee! %d\n", y)
    }
}


Протестировано с этой ревизией:

changeset:   3975:b51fd2d6c160
tag:         tip
user:        Kevin Ballard <xxxxxxxxxxxxxxxxxxxxx>
date:        Tue Nov 10 20:05:24 2009 -0800
summary:     Implement new emacs command M-x gofmt
0 голосов
/ 17 июля 2017
package main
import("fmt")
func main() {
    if x, y := 5, 38; x == 5 {
        fmt.Printf("y = %d\n", y)
        fmt.Printf("x = %d\n", x)
    }
}

https://play.golang.org/p/Sbv6hUmKyA

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...