簡體   English   中英

轉到:從庫調用函數

[英]Go: Function call from a library

現在我真的很困惑。 這是我的問題(Go對我來說是新的):

冷杉文件:

// main.go
package main

import "./libraries/test"

func main() {

    test.foo()
}

第二檔:

// test.go
package test

import "fmt"

func foo() {

    fmt.Println("foo")
}

我的結構如下所示:

main.go
   /libraries
        /test
           test.go

如果我編譯此代碼,則會收到以下錯誤消息:

./main.go:7:無法引用未導出的名稱test.foo

./main.go:7:未定義:test.foo

如果我到處都將foo更改為Foo ,則錯誤消失,程序將按預期工作。

我想您還沒有仔細閱讀Go文檔。 所有以大寫字母開頭的名稱都將從其包中導出。 不導出所有小寫的名稱。

在Go語言中,符號名稱是用大寫還是小寫的駝峰書寫是一個重要的區別。 這適用於函數,也適用於類型(如結構或接口)以及結構成員。

您可以在Go文檔 (重點是我的文檔 )中閱讀以下內容:

名稱在Go語言中與其他任何語言一樣重要。 它們甚至具有語義作用: 包外部名稱的可見性取決於其首字符是否為大寫

這意味着您不能隨意命名函數和類型 如果需要從另一個模塊調用此函數,則必須將其命名為Foo ,而不是foo

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM