github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/strconv/atoi.go (about)

     1  // Copyright 2009 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package strconv
     6  
     7  import "github.com/shogo82148/std/errors"
     8  
     9  // ErrRangeは、値が対象の型の範囲外であることを示します。
    10  var ErrRange = errors.New("value out of range")
    11  
    12  // ErrSyntaxは、値がターゲットの型の正しい構文ではないことを示します。
    13  var ErrSyntax = errors.New("invalid syntax")
    14  
    15  // NumErrorは変換に失敗したことを記録します。
    16  type NumError struct {
    17  	Func string
    18  	Num  string
    19  	Err  error
    20  }
    21  
    22  func (e *NumError) Error() string
    23  
    24  func (e *NumError) Unwrap() error
    25  
    26  // IntSizeはintまたはuint値のビットサイズです。
    27  const IntSize = intSize
    28  
    29  // ParseUintはParseIntと同じですが、符号の接頭辞は許可されていません。
    30  func ParseUint(s string, base int, bitSize int) (uint64, error)
    31  
    32  // ParseIntは与えられた基数(0、2から36)とビットサイズ(0から64)で文字列sを解釈し、対応する値iを返します。
    33  //
    34  // 文字列は先頭に符号 "+" または "-" を持つことができます。
    35  //
    36  // 基数引数が0の場合、真の基数は符号の後に続く文字列の接頭辞で推測されます(存在する場合):"0b"の場合は2、"0"または"0o"の場合は8、"0x"の場合は16、それ以外の場合は10です。また、基数0の場合だけアンダースコア文字が許可されます。これはGoの構文で定義されている[整数リテラル]です。
    37  //
    38  // bitSize引数は結果が適合する必要のある整数型を指定します。ビットサイズ0、8、16、32、64はint、int8、int16、int32、int64に対応します。bitSizeが0未満または64を超える場合、エラーが返されます。
    39  //
    40  // ParseIntが返すエラーは具体的な型*NumErrorを持ち、err.Num = sとなります。sが空であるか無効な数字を含んでいる場合、err.Err = ErrSyntaxとなり返される値は0です。sに対応する値を指定のサイズの符号付き整数で表現することができない場合、err.Err = ErrRangeとなり、返される値は適切なbitSizeと符号の最大の大きさの整数です。
    41  //
    42  // [整数リテラル]: https://go.dev/ref/spec#Integer_literals
    43  func ParseInt(s string, base int, bitSize int) (i int64, err error)
    44  
    45  // AtoiはParseInt(s, 10, 0)と同じであり、int型に変換されます。
    46  func Atoi(s string) (int, error)