Basic

Содержание

  • Install
  • Quick start
  • Use external packages
  • Вопросы и Ответы

Install

Скачать можно с офиц. сайта go - https://golang.org/. Golang сразу же установится в пути в PATH

Quick start

// hello.go
package main

import "fmt";

func main () {
	fmt.Println("Hello world")
	fmt.Scanln() // pause
}
go run hello.go

Use external packages

Для того чтобы установить пакеты извне, нужно обозначить текущий рабочий проект в путях:

  • GOROOT - это там где установлен язык. После установки, этот путь сам добавиться в PATH
  • GOPATH - это путь к текущему проекту. обычно указываеться как %CD%. Без неё пакеты извне будут ставиться фиг знает куда
  • PATH - это глобальные переменныя windows, нам надо добавить в неё путь к бинарникам проекта, чтобы обращаться к ним просто по имени.
packages.bat - скачка пакетов в проект
@ECHO OFF
SETLOCAL
chcp 866>nul

SET GOPATH=%CD%
SET PATH=%PATH%;%GOPATH%\BIN;

REM go get - команда которая скачивает пакеты извне
REM после одного раза можно коментить эту строку, так как пакет уже у вас

go get github.com/pilu/fresh

pause
runner.bat - запуск программы
@ECHO OFF
SETLOCAL
chcp 866>nul

SET GOPATH=%CD%
SET PATH=%PATH%;%GOPATH%\BIN;

REM for linux build
REM SET GOOS=linux
REM SET GOARCH=amd64
REM SET CGO_ENABLED=0

REM используем наш только что скачанный пакет. Это watcher за проектом.
fresh

go run main.go

pause

Вопросы и Ответы

1) Import cycle error?

Импорты могут замыкаться. Допустим: main -> config -> controllers -> config. Нельзя юзать предыдущее пространство. Надо идти дальше. Вот так: main -> config -> controllers -> config/structs

2) Где ищет import пакеты стандартно?

В папке src. Если вы пишите: import "storm/config", это значит: ./src/storm/config

3) Если у меня два файла и они относяться к одному пространству(пакету). При запуске go run main.go, выдает ошибку когда обращяешься к функциям или переменным другого файла. Почему?

go run filename.go - запускает только один файл, и поэтому не видит другие файлы из этого же пространства. Проблема решаеться 2 способами:

  • I. Указать второй файл - go run filename.go filename2.go
  • II. Сделать билд и запустить - go build filename.go && filename.exe