Коллеги подскажите, как в го правильно управлять ресурсами, в частности работа с путями. Проблема вот в чем, у меня есть html шаблон, который находится в директории "/templates/index.gohtml", в корне проекта. Хэндлер который работает с этим шаблоном находится в директории "/internal/http", если запускать юнит-тесты, то они уже не видят директорию с шаблоном, т.к. рабочая директория у теста та в которой он расположен.
Суть вопроса: есть ли практики (например как в Java, где ресурсы доступны из classpath) по управлению ресурсами, чтобы они были доступны, как из тестов так и из приложения?
привет. подскажите пожалуйста почему на второй итерации panic: unexpected newline
////////////////////////console/////////////////////////////
go run main.go
Welcome to calculator!
Please set your expression like 2 + 3 and press Enter
6 + 3
6 + 3 = 9
please set your next expression like 2 + 3 and press Enter
panic: unexpected newline
goroutine 1 [running]:
main.main()
C:/Projects/golang/testPlace/main.go:33 +0x2cb
exit status 2
make: * [Makefile:2: run] Error 1
////////////////////////console/////////////////////////////
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println("Welcome to calculator!")
var a string
var x float64
var y float64
var action func(x, y float64) float64
var printFlag bool
printFlag = false
fmt.Println("Please set your expression like 2 + 3 and press Enter")
_, err := fmt.Scanf("%g %s %g", &x, &a, &y)
if err != nil {
panic(err)
}
for {
if !printFlag {
printFlag = true
} else {
time.Sleep(time.Second * 2)
fmt.Println("please set your next expression like 2 + 3 and press Enter")
_, err = fmt.Scanf("%g %s %g", &x, &a, &y)
if err != nil {
panic(err)
}
}
process(action, a, x, y)
}
}
func process(action func(x, y float64) float64, a string, x, y float64) {
switch a {
case "+":
action = func(x, y float64) float64 { return x + y }
break
case "-":
action = func(x, y float64) float64 { return x - y }
break
case "*":
action = func(x, y float64) float64 { return x * y }
break
case "/":
action = func(x, y float64) float64 { return x / y }
break
}
fmt.Println(x, a, y, "=", calculate(action, x, y))
fmt.Println("")
}
func calculate(a func(x, y float64) float64, x, y float64) float64 {
return a(x, y)
}
even I, after 4 years of working with it, found out that there are TOO much fuckups under the hood
Читать полностью…