go get golang.org/x/tools/cmd/cover
go test -cover
go test -coverprofile <filename> go tool cover -html <coverage_file>
go get golang.org/x/tools/cmd/goimports
goimports -w .
Спомняте ли си как ви казахме че след версия 1.0 авторите са обещали, че каквото работи на 1.x ще работи на 1.y, където x < y ?
Е да ама ... понякога се налага да се променят основни API-та. До тук има два(2) фикса за от 1.0 насам.
И двата са за използване на ненаимeновани инициализации на структове
Student{12345, "Пешо Пешов"}
вместо
Student{faculty_number: 12345, name: "Пешо Пешов"}
Ако след ъпдейт на go не ви се компилира проекта, можете просто да рънете:
go fix .
Все пак понякога се правят по специални промени, за които това няма да помогне.
Статичен анализатор на go код, който може и да ви спести малко главоболия.
Някои поддържани проверки:
Lint за go от google.
go get github.com/golang/lint/golint
И го викаме с : (drum rolls)
golint .
go get golang.org/x/tools/cmd/gorename
С даден файл
gorename -from filename.go::NameOfSomething -to NewNameOfSomething
само разпознава какво е Something и го преименува в правилните файлове.
Или
gorename -from '"site.com/package/path".structName[.MethodName]' -to NewNameOfSomething
Преименува дадения идентификатор по даден пакет и идентификатор.
Навярно няма да го ползвате ръчно.
Вие питате, а той ви отговаря на въпроси относно кода ви.
Не се ползва ръчно - или поне не лесно.
// +build tagname
някъде в началото на файла още преди package
сигнализират на компилатора при какви обстоятелства да компилира или да не компилира даден файл
// +build linux // +build !386
казва само под linux , но не под 386
go build -tag tagname
Kъм момента списъка от команди включва:
//go:generate command args...
в началото на някой go файл който ще се компилира
Повечето tool-ве описане до тук са писани с идеята, че ще бъдат интегрирани или поне с възможността да бъдат интегрирани в един или друг текстов редактор и цялостно IDE.
Общото между двата и причината да не ви показваме как се ползват ръчно е, че и двата работят с byte offset, а не с номера на редове.
os.Args
flag
ту дъ рескюimport "flag" var stringVar string func init() { flag.StringVar(&stringVar, "paramName", "help message") } func main() { flag.Parse() // do something with stringVar }