Golang book 12
переписать с отправкой структуры с 432
автотесты
import "testing"
func TestMyFunc(t *testing.T) {
t.Error("not good test")
}
имя всегда должно начинаться с Test!
go test /dir
go test /dir -v
-v это максимум подробности
go test /dir -v -run Two
-run запускает тест в названии которого есть two
находит в текущем каталоге все файлы,
которые завершаются на _test.go
и выполняет там все функции, где имена начинаются с Test
, при компиляции на эти файлы не обращают внимание..
func TestMyFunc(t *testing.T){
list := []string("app", "orange")
if myFunc(list) != "norm result" {
t.Error("pipec")
}
}
подробные тесты писать так
func TestMyFunc(t *testing.T){
list := []string("app", "orange")
want := "norm result"
result := myFunc(list)
if result != want {
t.Errorf("myFunc(%#v") = %#v, want %#v", list, result, want)
}
}
если тестов много, то можно определить новый тип, как аргументы, результати через массив через цикл их перебрать
называется табличные тесты
веб приложения
http://localhost:8080/hi
package main
import (
// "fmt"
"log"
"net/http"
)
func web(writer http.ResponseWriter, request *http.Request) {
writer.Write([]byte("hw"))
}
func main() {
http.HandleFunc("/hi", web)
err := http.ListenAndServe("localhost:8080", nil)
log.Fatal(err)
}
462
465
Преобразовать в байты и обратно
fmt.Println(string([]byte(72, 101, 108, 108, 111))) // Hello
fmt.Println([]byte("Hello")) // [72, 101, 108, 108, 111]
func write(writer http.ResponseWriter, message string) {
_, err := writer.Write([]byte(massage))
if err != nil {
log.Fatal(err)
}
}
функци можно присваивать другую функцию
var newFunc func()
var newFunc func(int, int) float64
newFunc = oldFunc
469
function twice(theFunc func()){
theFunc()
theFunc()
}
Параметры и возвращаемое значение является частью типа функции
480