2014-10-01 4 views
11

Привет, я новичок в golang.Вызвать функцию из другого пакета в Go

У меня есть два файла main.go, который находится под package main и еще один файл с некоторыми функциями в пакете, называемые функциями.

Мой вопрос: Как я могу назвать функцию от package main?

Файл 1: main.go (расположенный в MYPROJ/main.go)

package main 

import "fmt" 
import "functions" // I dont have problem creating the reference here 

func main(){ 
    c:= functions.getValue() // <---- this is I want to do 
} 

Файл 2: functions.go (расположенный в MYPROJ/функции/functions.go)

package functions 

func getValue() string{ 
    return "Hello from this another package" 
} 

Большое спасибо за помощь.

+8

Уважаемые пользователи SO: пожалуйста, объясните downvotes! Это никому не помогает, если вы не оставите комментарий _why_ вы думаете, что это плохой вопрос. – topskip

+5

Чтобы вызвать его извне, вы должны запустить свое имя функции с именем капитала ('GetValue()'). – topskip

ответ

15

импортирован пакет его импорт путем, и ссылки на все свои экспортируемые символы (те, начиная с заглавной буквой) через имя пакета, например, так:

import "MyProj/functions" 

functions.GetValue() 
+0

@topskip: спасибо, полностью пропустил это;) – JimB

+0

Спасибо! PS. Не могли бы вы привести пример вопроса в правильной форме? –

2
  • Вы должны PREfix ваш импорт в main.go с: MyProj, потому что в каталоге, в котором находится код, есть имя пакета по умолчанию в Go, вы его вызываете main или нет. Он будет называться MyProj.

  • package main просто означает, что этот файл имеет исполняемую команду, содержащую func main(). Затем вы можете запустить этот код как: go run main.go. См. here для получения дополнительной информации.

  • Вы должны переименовать пакет func getValue() в functions к func GetValue(), потому что, только что таким образом FUNC будет виден другим пакетам. См. here для получения дополнительной информации.

Файл 1: main.go (расположенный в MYPROJ/main.go)

package main 

import (
    "fmt" 
    "MyProj/functions" 
) 

func main(){ 
    fmt.Println(functions.GetValue()) 
} 

Файл 2: functions.go (расположенный в MYPROJ/функции/functions.go)

package functions 

// `getValue` should be `GetValue` to be exposed to other packages. 
// It should start with a capital letter. 
func GetValue() string{ 
    return "Hello from this another package" 
} 
0

Экспорт ПолучитьЗначение функции, сделав 1-й символ имени функции капитала, ПолучитьЗначение

Смежные вопросы