一尘不染

从另一个包导出功能

go

我按照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/

阅读 184

收藏
2020-07-02

共1个答案

一尘不染

Golang Tour将导出的名称指定为

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

更改reversefunc 的名称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)
}
2020-07-02