splitting values in []string in go

huangapple go评论81阅读模式
英文:

splitting values in []string in go

问题

我是你的中文翻译助手,以下是翻译好的内容:

我是Go编程语言的新手。
我正在编写一段代码,用于从命令行界面接收客户端输入,并将这些值传递给服务器进行处理。客户端和服务器都位于本地。

代码:

package main

import (
	"flag"
	"fmt"
	"strings"
)

func main() {

	text := gettext()
	fmt.Println(text)

	result := strings.Split(text, " ")

	for i := range result {

		fmt.Println(result[i])
	}

}

func gettext() []string {

	flag.Parse()
	text := flag.Args()

	if len(text) < 1 {

		fmt.Println("请输入半径")

	}

	return text
}

当我从命令行运行时,出现以下错误:无法将text(类型为[]string)作为strings.Split函数的参数中的string类型使用。

基本上,我想要单独打印[]string中的值。

请问你能告诉我如何做吗?我尝试使用了strings.Split函数。

谢谢。

英文:

I am a novice in Go programming language.
I am writing a code to input from cli for client and pass the values to server for processing. both client and server are residing locally.

code :

package main

import (
	&quot;flag&quot;
	&quot;fmt&quot;
	&quot;strings&quot;
)

func main() {

	text := gettext()
	fmt.Println(text)

	result := strings.Split(text, &quot; &quot;)

	for i := range result {

		fmt.Println(result[i])
	}

}

func gettext() []string {

	flag.Parse()
	text := flag.Args()

	if len(text) &lt; 1 {

		fmt.Println(&quot;Please enter radius&quot;)

	}

	return text
}

when i run from command line its is giving me following error :cannot use text (type []string) as type string in argument to strings.Split

Basically i want to separately print values from []string .

Can you please let me know how to do it.
I tried using strings.split.

Thanks.

答案1

得分: 3

你不需要用" "分隔值。
这些值已经被分隔开了,你的函数gettext返回参数的切片
试试这个例子:

package main

import (
	"flag"
	"fmt"
)

func main() {
	text := gettext()
	fmt.Println(text)

	for i := range text {
		fmt.Println(text[i])
	}
}

func gettext() []string {
	flag.Parse()
	text := flag.Args()

	if len(text) < 1 {
		fmt.Println("请输入半径")
	}

	return text
}

文档中可以看到:

func Args() []string
Args 返回非标志的命令行参数。

英文:

You don't need to separate values by &quot; &quot;
The values already separated and your function gettext returns a slice of parameters.
Try this example:

package main

import (
	&quot;flag&quot;
	&quot;fmt&quot;
)

func main() {
	text := gettext()
	fmt.Println(text)

	for i := range text {
		fmt.Println(text[i])
	}
}

func gettext() []string {
	flag.Parse()
	text := flag.Args()

	if len(text) &lt; 1 {
		fmt.Println(&quot;Please enter radius&quot;)
	}

	return text
}

From the documentation:
> func Args() []string
> Args returns the non-flag command-line arguments.

答案2

得分: 0

strings.Split()用于分割一个字符串值,而不是一个字符串数组。你的gettext()返回的是一个字符串数组,而不是一个字符串。所以你不需要使用strings.Split()。只需使用以下代码:

for _, str := range text {
    fmt.Println(str)
}
英文:

strings.Split() is for spliting a string value, not a string array. Your gettext() is returing a string array, not a string. So you dont need string.Split(). Simply use

for _, str := range text {
    fmt.Println(str)
}

huangapple
  • 本文由 发表于 2015年9月23日 14:39:05
  • 转载请务必保留本文链接:https://go.coder-hub.com/32732666.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定