Коммандер Go ( go tool link ) имеет возможность установить значение неинициализированной строковой переменной:
-X importpath.name=value
Set the value of the string variable in importpath named name to value.
Note that before Go 1.5 this option took two separate arguments.
Now it takes one argument split on the first = sign.
Как часть процесса сборки, вы можете с помощью этого используйте переменную строки версии. Вы можете передать это через инструмент go
, используя -ldflags
. Например, с учетом следующего исходного файла:
package main
import "fmt"
var xyz string
func main() {
fmt.Println(xyz)
}
Затем:
$ go run -ldflags "-X main.xyz=abc" main.go
abc
Чтобы установить main.minversion
на дату и время сборки при создании:
go build -ldflags "-X main.minversion=`date -u +.%Y%m%d.%H%M%S`" service.go
Если вы скомпилируете без инициализации main.minversion
таким образом, он будет содержать пустую строку.
«Named foo» в выходных данных str
просто означает, что ваш объект является вектором foo
с именами, прикрепленными к нему.
x <- c(1,2,3)
names(x) <- letters[1:3]
str(x)
# Named num [1:3] 1 2 3
# - attr(*, "names")= chr [1:3] "a" "b" "c"
y <- c("bar", "baz")
names(y) <- letters[1:2]
str(y)
# Named chr [1:2] "bar" "baz"
# - attr(*, "names")= chr [1:2] "a" "b"
Вот решение для доступа к именам по порядку и названию максимума:
v <- c(a=1, b=2, c=-1)
names(sort(v))
> [1] "c" "a" "b"
names(which.max(v))
> "b"