2017-11-11 57 views
-5

我在GitHub下有一個項目,我在本地機器上工作。 下面是該項目即使在golang中導入時也未定義func

.weather: 
    - weather-service.go 
    - darksky-provider.go 
.grpc-weather: 
    - weather.proto 
server.go 

的server.go文件按以下步驟進行的結構:

import (
    pb "github.com/scayetanot/weather_service_go/grpc_weather" 
    "net" 
    "log" 
    "golang.org/x/net/context" 
    "google.golang.org/grpc" 
    "google.golang.org/grpc/reflection" 
    weather "github.com/scayetanot/weather_service_go/weather" 
) 

//Default configuration port 
const (
    port = ":50051" 
) 

type server struct{} 

// implementation of the interface with Server 
func (s *server) GetWeather(ctx context.Context, in *pb.GetFromPlaceRequest) (*pb.GetFromPlaceReply, error) { 
    log.Print("Retrieve data from weather service") 
    forecast, err := weather.get_weather(ctx, in.Place, in.Date) 
    if err != nil { 
     log.Fatalf("failed to retrieve weather: %v", err) 
    } 
    log.Print("Reply weather to client") 
    return &pb.GetFromPlaceReply{Weather: forecast}, nil 
} 

功能get_weather顯示爲不確定,但我已導入PKG

weather "github.com/scayetanot/weather_service_go/weather" 

但它仍在抱怨。但它適用於名爲「pb」的導入

即使導入完成,也不會看到使用func的任何想法嗎?我在本地已運行去拿github上..有我的項目在當地

您可以檢查https://github.com/scayetanot/weather_service_go看到包的天氣和文件天氣service.go

任何意見或幫助,歡迎

Regards

+2

您需要導出它。通過使第一個字母爲大寫字母來導出標識符。因此,將'get_weather'改爲'Get_weather'將會起作用,如果將其更改爲'GetWeather'以保持一致,則更好。 – mkopriva

+2

以供參考,這包括在[Tour Of Go:基礎知識](https://tour.golang.org/basics/3) – JimB

+0

該功能必須按照先前評論中的說明導出。更重要的是,包github.com/scayetanot/weather_service_go/weather中沒有名稱爲get_weather的函數。 –

回答

-4

我不習慣去,但它看起來像你命名空間它。

如果你看一下pb導入,它的使用位置是前綴pb.Method;我的猜測是GetWeather需要相同。

例如爲:

Weather.GetWeather或一些語法變體;您可以隨時嘗試不帶前綴的導入。

相關問題