Make use of strings.Cut
This commit is contained in:
+7
-7
@@ -242,21 +242,21 @@ func (scanPlanTextAnyToIntervalScanner) Scan(src []byte, dst any) error {
|
||||
return fmt.Errorf("bad interval minute format: %s", timeParts[1])
|
||||
}
|
||||
|
||||
secondParts := strings.SplitN(timeParts[2], ".", 2)
|
||||
sec, secFrac, secFracFound := strings.Cut(timeParts[2], ".")
|
||||
|
||||
seconds, err := strconv.ParseInt(secondParts[0], 10, 64)
|
||||
seconds, err := strconv.ParseInt(sec, 10, 64)
|
||||
if err != nil {
|
||||
return fmt.Errorf("bad interval second format: %s", secondParts[0])
|
||||
return fmt.Errorf("bad interval second format: %s", sec)
|
||||
}
|
||||
|
||||
var uSeconds int64
|
||||
if len(secondParts) == 2 {
|
||||
uSeconds, err = strconv.ParseInt(secondParts[1], 10, 64)
|
||||
if secFracFound {
|
||||
uSeconds, err = strconv.ParseInt(secFrac, 10, 64)
|
||||
if err != nil {
|
||||
return fmt.Errorf("bad interval decimal format: %s", secondParts[1])
|
||||
return fmt.Errorf("bad interval decimal format: %s", secFrac)
|
||||
}
|
||||
|
||||
for i := 0; i < 6-len(secondParts[1]); i++ {
|
||||
for i := 0; i < 6-len(secFrac); i++ {
|
||||
uSeconds *= 10
|
||||
}
|
||||
}
|
||||
|
||||
+8
-8
@@ -50,17 +50,17 @@ func parsePoint(src []byte) (*Point, error) {
|
||||
if src[0] == '"' && src[len(src)-1] == '"' {
|
||||
src = src[1 : len(src)-1]
|
||||
}
|
||||
parts := strings.SplitN(string(src[1:len(src)-1]), ",", 2)
|
||||
if len(parts) < 2 {
|
||||
sx, sy, found := strings.Cut(string(src[1:len(src)-1]), ",")
|
||||
if !found {
|
||||
return nil, fmt.Errorf("invalid format for point")
|
||||
}
|
||||
|
||||
x, err := strconv.ParseFloat(parts[0], 64)
|
||||
x, err := strconv.ParseFloat(sx, 64)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
y, err := strconv.ParseFloat(parts[1], 64)
|
||||
y, err := strconv.ParseFloat(sy, 64)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -247,17 +247,17 @@ func (scanPlanTextAnyToPointScanner) Scan(src []byte, dst any) error {
|
||||
return fmt.Errorf("invalid length for point: %v", len(src))
|
||||
}
|
||||
|
||||
parts := strings.SplitN(string(src[1:len(src)-1]), ",", 2)
|
||||
if len(parts) < 2 {
|
||||
sx, sy, found := strings.Cut(string(src[1:len(src)-1]), ",")
|
||||
if !found {
|
||||
return fmt.Errorf("invalid format for point")
|
||||
}
|
||||
|
||||
x, err := strconv.ParseFloat(parts[0], 64)
|
||||
x, err := strconv.ParseFloat(sx, 64)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
y, err := strconv.ParseFloat(parts[1], 64)
|
||||
y, err := strconv.ParseFloat(sy, 64)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
+4
-4
@@ -205,17 +205,17 @@ func (scanPlanTextAnyToTIDScanner) Scan(src []byte, dst any) error {
|
||||
return fmt.Errorf("invalid length for tid: %v", len(src))
|
||||
}
|
||||
|
||||
parts := strings.SplitN(string(src[1:len(src)-1]), ",", 2)
|
||||
if len(parts) < 2 {
|
||||
block, offset, found := strings.Cut(string(src[1:len(src)-1]), ",")
|
||||
if !found {
|
||||
return fmt.Errorf("invalid format for tid")
|
||||
}
|
||||
|
||||
blockNumber, err := strconv.ParseUint(parts[0], 10, 32)
|
||||
blockNumber, err := strconv.ParseUint(block, 10, 32)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
offsetNumber, err := strconv.ParseUint(parts[1], 10, 16)
|
||||
offsetNumber, err := strconv.ParseUint(offset, 10, 16)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user