Global variables 全局变量/Get命令行参数并打印
这听起来可能很愚蠢,但如何在Go中定义全局变量Global variables 全局变量/Get命令行参数并打印,global-variables,go,Global Variables,Go,这听起来可能很愚蠢,但如何在Go中定义全局变量const myglobalvariable=“你好!”实际上不起作用 我只想得到命令行参数,然后打印它。我使用以下代码段执行此操作: package main import ( "flag" "fmt" ) func main() { gettext(); fmt.Println(text) } func gettext() { flag.Parse() text := flag.Args()
const myglobalvariable=“你好!”
实际上不起作用
我只想得到命令行参数,然后打印它。我使用以下代码段执行此操作:
package main
import (
"flag"
"fmt"
)
func main() {
gettext();
fmt.Println(text)
}
func gettext() {
flag.Parse()
text := flag.Args()
if len(text) < 1 {
fmt.Println("Please give me some text!")
}
}
主程序包
进口(
“旗帜”
“fmt”
)
func main(){
gettext();
fmt.Println(文本)
}
func gettext(){
flag.Parse()
text:=flag.Args()
如果len(文本)<1{
Println(“请给我一些文字!”)
}
}
问题是它只是打印了一个空行,所以我考虑使用const myglobalvariable=“Hi there!”
声明一个全局变量,但我得到的错误是无法使用flag.Args()(type[]string)作为赋值中的类型理想字符串
。。。
…我知道这是一个noob问题,所以我希望您能帮助我…为什么需要全局变量?比如说,
package main
import (
"flag"
"fmt"
)
func main() {
text := gettext()
fmt.Println(text)
}
func gettext() []string {
flag.Parse()
text := flag.Args()
if len(text) < 1 {
fmt.Println("Please give me some text!")
}
return text
}
主程序包
进口(
“旗帜”
“fmt”
)
func main(){
text:=gettext()
fmt.Println(文本)
}
func gettext()[]字符串{
flag.Parse()
text:=flag.Args()
如果len(文本)<1{
Println(“请给我一些文字!”)
}
返回文本
}
我在这里看到至少两个问题,也许三个
package main
import (
"flag"
"fmt"
"os"
)
//This is how you declare a global variable
var someOption bool
//This is how you declare a global constant
const usageMsg string = "goprog [-someoption] args\n"
func main() {
flag.BoolVar(&someOption, "someOption", false, "Run with someOption")
//Setting Usage will cause usage to be executed if options are provided
//that were never defined, e.g. "goprog -someOption -foo"
flag.Usage = usage
flag.Parse()
if someOption {
fmt.Printf("someOption was set\n")
}
//If there are other required command line arguments, that are not
//options, they will now be available to parse manually. flag does
//not do this part for you.
for _, v := range flag.Args() {
fmt.Printf("%+v\n", v)
}
//Calling this program as "./goprog -someOption dog cat goldfish"
//outputs
//someOption was set
//dog
//cat
//goldfish
}
func usage() {
fmt.Printf(usageMsg)
flag.PrintDefaults()
os.Exit(1)
}
查看如何处理相同的问题。在Go中,最接近全局变量的是包变量。你定义一个像
var text string
不过,命令行参数已经位于包变量os.Args中,等待您访问它们。你甚至不需要旗子包
package main
import (
"fmt"
"os"
)
func main() {
if len(os.Args) < 2 { // (program name is os.Arg[0])
fmt.Println("Please give me some text!")
} else {
fmt.Println(os.Args[1:]) // print all args
}
}
主程序包
进口(
“fmt”
“操作系统”
)
func main(){
如果len(os.Args)<2{//(程序名为os.Arg[0])
Println(“请给我一些文字!”)
}否则{
fmt.Println(os.Args[1:])//打印所有Args
}
}
这是一个非常懒惰的答案。你甚至没有链接到一个特定的文件,而是一个包含数千个文件的回购协议。现实世界的例子就在这里:我认为这个答案被否决了,因为它给了OP他们需要的,而不是他们要求的:)