1- // Package go-safecast solves the type conversion issues in Go
2- //
3- // In Go, integer type conversion can lead to unexpected behavior and errors if not handled carefully.
4- // Issues can happen when converting between signed and unsigned integers, or when converting to a smaller integer type.
5-
61package safecast
72
83import (
@@ -61,7 +56,7 @@ func Convert[NumOut Number](orig any) (converted NumOut, err error) {
6156 return convertFromString [NumOut ](v )
6257 }
6358
64- return 0 , Error {
59+ return 0 , errorHelper {
6560 err : fmt .Errorf ("%w from %T" , ErrUnsupportedConversion , orig ),
6661 }
6762}
@@ -97,7 +92,7 @@ func convertFromNumber[NumOut Number, NumIn Number](orig NumIn) (converted NumOu
9792 errBoundary = ErrExceedMinimumValue
9893 }
9994
100- return 0 , Error {
95+ return 0 , errorHelper {
10196 value : orig ,
10297 err : errBoundary ,
10398 boundary : boundary ,
@@ -112,7 +107,7 @@ func convertFromNumber[NumOut Number, NumIn Number](orig NumIn) (converted NumOu
112107 }
113108
114109 if ! sameSign (orig , converted ) {
115- return 0 , Error {
110+ return 0 , errorHelper {
116111 value : orig ,
117112 err : errBoundary ,
118113 boundary : boundary ,
@@ -135,7 +130,7 @@ func convertFromNumber[NumOut Number, NumIn Number](orig NumIn) (converted NumOu
135130 return converted , nil
136131 }
137132
138- return 0 , Error {
133+ return 0 , errorHelper {
139134 value : orig ,
140135 err : errBoundary ,
141136 boundary : boundary ,
@@ -155,7 +150,7 @@ func convertFromString[NumOut Number](s string) (converted NumOut, err error) {
155150 if strings .Contains (s , "." ) {
156151 o , err := strconv .ParseFloat (s , 64 )
157152 if err != nil {
158- return 0 , Error {
153+ return 0 , errorHelper {
159154 value : s ,
160155 err : fmt .Errorf ("%w %v to %T" , ErrStringConversion , s , converted ),
161156 }
@@ -167,13 +162,13 @@ func convertFromString[NumOut Number](s string) (converted NumOut, err error) {
167162 o , err := strconv .ParseInt (s , 0 , 64 )
168163 if err != nil {
169164 if errors .Is (err , strconv .ErrRange ) {
170- return 0 , Error {
165+ return 0 , errorHelper {
171166 value : s ,
172167 err : ErrExceedMinimumValue ,
173168 boundary : math .MinInt ,
174169 }
175170 }
176- return 0 , Error {
171+ return 0 , errorHelper {
177172 value : s ,
178173 err : fmt .Errorf ("%w %v to %T" , ErrStringConversion , s , converted ),
179174 }
@@ -185,14 +180,14 @@ func convertFromString[NumOut Number](s string) (converted NumOut, err error) {
185180 o , err := strconv .ParseUint (s , 0 , 64 )
186181 if err != nil {
187182 if errors .Is (err , strconv .ErrRange ) {
188- return 0 , Error {
183+ return 0 , errorHelper {
189184 value : s ,
190185 err : ErrExceedMaximumValue ,
191186 boundary : uint (math .MaxUint ),
192187 }
193188 }
194189
195- return 0 , Error {
190+ return 0 , errorHelper {
196191 value : s ,
197192 err : fmt .Errorf ("%w %v to %T" , ErrStringConversion , s , converted ),
198193 }
0 commit comments