func NewARecordValue(value []byte) (*ARecordValue, error) {
	a := &ARecordValue{}
	err := json.Unmarshal(value, a)
	if err != nil {
		return nil, err
	}
	return a, nil
}
NewARecordValue return *ARecordValue, it uses core dns A record value which is a json string as the input
package coredns
import (
	"context"
	"encoding/json"
	"errors"
	"fmt"
	"strings"
	"time"
	clientv3 "go.etcd.io/etcd/client/v3"
	"github.com/romberli/go-util/middleware/etcd"
)
const (
	DefaultMutexPrefix = "/mutex/coredns"
	DefaultTimeFormat  = "2020-08-20 11:55:00.000000"
	InfiniteTTLTime    = 0
	MinimumTTLTime     = 1
	MaximumTTLTime     = 10
)
var ErrInvalidTTL = errors.New(
	fmt.Sprintf("TTL must be larger then %d and smaller than %d.", MinimumTTLTime, MaximumTTLTime))
var ErrLockFailed = errors.New(fmt.Sprintf("lock mutex failed, please try again later."))
type ARecordValue struct {
	Host string `json:"host"`
	TTL  int64  `json:"ttl"`
}