【问题标题】:Exported functions from another package从另一个包中导出的函数
【发布时间】:2018-04-28 18:30:34
【问题描述】:

我按照https://golang.org/doc/code.html#Workspaces 链接中的说明构建了我的第一个 Go 程序。

所以,我尝试用这条指令创建库 = https://golang.org/doc/code.html#Library

在构建 hello.go 之前一切都很完美,它给了我这个错误。

/hello.go:10:13: 未定义:stringutil.Reverse

我已经重建了我的reverse.go.

这是我的代码:

package main

import (
    "fmt"

    "github.com/d35k/stringutil"
)

func main() {
    fmt.Printf(stringutil.Reverse("!oG ,olleH"))
}

这是我的 reverse.go(与文档相同)

package stringutil

func reverse(s string) string {
    r := []rune(s)
    for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
        r[i], r[j] = r[j], r[i]
    }
    return string(r)
}

还有我的 gopath 变量

export GOPATH=$HOME/GoLang

我的文件在

GoLang/src/github.com/mygithubusername/

【问题讨论】:

  • 在终端中使用 go env 命令并检查 go root 和 go path 变量。
  • GOPATH 是正确的,但是 goroot 在“/usr/local/go”中
  • 请发布您的 go path 变量和您的 stringutil 包代码
  • 更新@Himanshu

标签: go


【解决方案1】:

Golang Tour指定导出名称为

如果名称以大写字母开头,则会导出该名称。什么时候 导入包时,您只能引用其导出的名称。任何 无法从包外部访问“未导出”名称。

reverse func 的名称更改为Reverse,使其可导出到主包。如下所示

package stringutil

func Reverse(s string) string {
    r := []rune(s)
    for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
        r[i], r[j] = r[j], r[i]
    }
    return string(r)
} 

【讨论】:

    猜你喜欢
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 2019-04-29
    • 2021-03-18
    • 1970-01-01
    • 2020-02-24
    相关资源
    最近更新 更多