2016-05-19 1 views
1

Я знаю, как сделать функцию, которая объединяет все предоставленные ей параметры и одну для вычитания, и я хотел создать простую математическую библиотеку для добавления и вычитания и умножения и деления, но мой интернет ищет, как скомпилировать в библиотека пришла безрезультатно. Я хотел бы знать, есть ли способ сделать .go в библиотеку, и если да, то как вы это делаете. Я до сих пор очень новен. Если вы знаете, как рассказать мнеКак превратить код Go в библиотеку?

+1

Прочтите [это] (https://golang.org/doc/code.html), [это] (http://dave.cheney.net/2014/12/01/five-suggestions-for-setting -up-a-go-project) и [this] (https://github.com/golang/go/wiki/GithubCodeLayout) для начала. О, и [это] (https://blog.golang.org/organizing-go-code) тоже. – kostix

ответ

1

Если вы запустите go install на свой пакет, он создаст для вас статическую библиотеку с именем этого пакета и поместит ее в ваш GOPATH/pkg/ARCH/packageName/packageName.a. Например, если у вас есть $GOPATH комплект как /home/yourname/go, вы можете создать следующий файл:

/home/yourname/go/src/myMath/myMath.go

с содержанием:

package myMath 

func MyAdd(/* .... */) { // Capatalize the name of the function to allow it to be accessible from outside of this package 
    // Do stuff 
} 

Теперь, если вы делаете go install, вы будете имеют библиотеку myMath.a в каталоге выше.

Чтобы использовать эту библиотеку из другого пакета идут, myStats сказать, что вы можете сделать следующее:

package myStats 

import "myMath" // import your library. notice the "" around the name 

func someFunction(/* .... */) { 
    r := myMath.MyAdd(/* ..... */) 
} 

Обратите внимание еще раз, что вы должны капитализироваться имя функции, которые вы хотите использовать из-за пределов пакет. Например, если ваша функция добавления была вызвана myAdd, тогда она не была бы доступна с myStats, даже если вы импортируете пакет myMath.

Редактировать исправлены ошибки, основанные на комментариях от @icza, ниже.

+1

Папка пакета 'pkg' (не' pack'), а 'go build' не создает файл' * .a' (он отбрасывает результат). См. [Что делает сборку сборки?] (Http://stackoverflow.com/questions/30612611/what-does-go-build-build) – icza