func Walk(root string, fn WalkFunc) error
type WalkFunc func(path string, info fs.FileInfo, err error) error
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
rootDir := `/var/log`
err := filepath.Walk(rootDir, func(path string, info os.FileInfo, err error) error {
if err != nil {
fmt.Printf("walk error %q: %v\n", path, err)
return err
}
fmt.Printf("got new item: %q, %s\n", path, info.Name())
return nil
})
if err != nil {
fmt.Printf("walk error %q: %v\n", rootDir, err)
return
}
}
got new item: "/var/log", log
got new item: "/var/log/boot.log", boot.log
got new item: "/var/log/btmp", btmp
got new item: "/var/log/cron", cron
got new item: "/var/log/dmesg", dmesg
got new item: "/var/log/fail2ban.log", fail2ban.log
type FileInfo interface {
Name() string // base name of the file
Size() int64 // length in bytes for regular files; system-dependent for others
Mode() FileMode // file mode bits
ModTime() time.Time // modification time
IsDir() bool // abbreviation for Mode().IsDir()
Sys() interface{} // underlying data source (can return nil)
}
type MySQLStorage struct {
db *sql.DB
}
func NewMySQLStorage(db *sql.DB) *MySQLStorage {
return &MySQLStorage{
db: db,
}
}
func (sg *MySQLStorage) StorePurchases(ctx context.Context, sp []*Purchase) ([]*Purchase, error) {
for _, p := range sp {
fmt.Printf("%+v\n", p)
}
return sp, nil
}
func (sg *MySQLStorage) StoreSubscriptionPurchases(ctx context.Context, sp []*SubscriptionPurchase) ([]*SubscriptionPurchase, error) {
for _, p := range sp {
fmt.Printf("%+v\n", p)
}
return sp, nil
}
Думаю тут лучше отталкиваться от наличия вакансий на рынке.
> у эфира есть большое коммьюнити и много обучающего материала.
даже это не дало сразу целостного понимания ))
> Работы в качестве блокчейн-разработчика на постоянной основе
Тут опять же лучше смотреть требования в вакансиях, как по мне - блокчейн разработчик и разработчик смарт контрактов сильно разные вещи.
Фактически "блокчейн разработчик" - это тот, кто делает блокчейны типа Эфира, Соланы и т.д.
А смарт-контракты - это уже тот, кто создаёт приложения на базе разработанных Эфира и т.д.
Если есть опыт вёрстки, я бы советовал прокачивать front-end разработку, в частности React и Vue.js