使用Golang编写时出现编译错误:在strings.trim中未定义strings。

8

我尝试使用golang来解决这个问题557. 反转字符串中的单词 III 我的代码如下:

import "fmt"
import  ss "strings"

func reverseWords(s string) string {
    words := ss.Split(s," ");
    res := "";
    for i:=0; i < len(words);i++{
        curWord := ss.Split(words[i],"");
        for j:=len(curWord)-1; j >= 0;j--{
            res += curWord[j];
        }
        if(i!=len(words)-1){
            res += " ";
        }
    }
    return res;
}

func main(){
    s := "Let's take LeetCode contest";
    fmt.Println(reverseWords(s));
}

我的电脑上一切都正常,至少可以通过编译。
然而,当我在Leetcode上提交时,它告诉我:

 Line 67: undefined: strings in strings.Trim 

我在谷歌上搜索了这个错误,但没有找到相关的信息。作为一个golang的初学者,我需要帮助。感激不尽。
2个回答

6

您正在使用别名导入字符串:

import  ss "strings"

这意味着在文件中的任何地方,您都必须引用ss而不是strings,例如:

words := ss.Split(s," ")

如果您使用默认导入:

import "strings"

然后,您可以像平常一样将其称为字符串。请注意,当前接受的答案有两个错误:您绝对可以按照您给定的名称使用别名,只是必须使用别名调用包。如果您想引用它,无论是否使用别名,都需要导入strings包 - 由您决定。另外,完全没有关联的一面,请强烈考虑在您的代码上运行go fmt,因为它不符合Go编码标准;例如,标准的Go代码省略了绝大多数分号。代码仍然可以正常工作,但如果您的代码格式与其他人习惯看到的格式不同,则从其他Go开发人员那里获得帮助会更加容易。

0
如果您使用不同的名称导入strings包,则会出现问题,因为它被包装器代码用于完全运行函数。
无需再次导入strings包。它将被添加。
直接使用即可。
func reverseWords(s string) string {
    words := strings.Split(s," ");
    res := "";
    for i:=0; i < len(words);i++{
        curWord := strings.Split(words[i],"");
        for j:=len(curWord)-1; j >= 0;j--{
            res += curWord[j];
        }
        if(i!=len(words)-1){
            res += " ";
        }
    }
    return res;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接