Вопрос по – Голанг условный сборник

44

У меня проблема с условной компиляцией в Go 1.

Вот мой тестовый код. Есть ли что-то, что я неправильно понял в отношении & quot; // + build & quot; ограничение и "-tags" флаг?

main1.go

// +build main1
package main

import (
    "fmt"
)

func main() {
    fmt.Println("This is main 1")
}

main2.go

// +build main2
package main

import (
    "fmt"
)

func main() {
    fmt.Println("This is main 2")
}

при запуске & quot; go build & quot; я все еще получаю ошибку компиляции

$ go build -tags 'main1'
# test
./main2.go:8: main redeclared in this block
        previous declaration at ./main1.go:8

Ваш Ответ

4   ответа
5

http://golang.org/pkg/go/build/ & # x201C; Чтобы отличить ограничения сборки от документации пакета, за серией ограничений сборки должна следовать пустая строка. & # x201D;

66

// +build XXX с пустой строкой.

В моем кратком поиске я не смог найти, где / если это задокументировано. Ноисточник ясно зовет

Это задокументировано вgolang.org/pkg/go/build/#hdr-Build_Constraints, В частности: & quot; Чтобы отличить ограничения сборки от документации пакета, за последовательностью ограничений сборки должна следовать пустая строка. & Quot;
12

Package build

Build Constraints

A build constraint is a line comment beginning with the directive +build that lists the conditions under which a file should be included in the package. Constraints may appear in any kind of source file (not just Go), but they must appear near the top of the file, preceded only by blank lines and other line comments.

To distinguish build constraints from package documentation, a series of build constraints must be followed by a blank line.

Добавьте пустую строку после ограничения сборки. Например,

// +build main1

package main

import (
    "fmt"
)

func main() {
    fmt.Println("This is main 1")
}
12

// +build XXX но преждеpackage main потому что все строки комментариев перед строкой, объявляющей пакет, считаются описанием пакета и анализируютсяgodoc.

Похожие вопросы