github.com/DQNEO/babygo@v0.0.3/lib/strconv/strconv.go (about)

     1  package strconv
     2  
     3  func Itoa(ival int) string {
     4  	if ival == 0 {
     5  		return "0"
     6  	}
     7  
     8  	var buf = make([]uint8, 100, 100)
     9  	var r = make([]uint8, 100, 100)
    10  
    11  	var next int
    12  	var right int
    13  	var ix = 0
    14  	var minus bool
    15  	minus = false
    16  	for ix = 0; ival != 0; ix = ix + 1 {
    17  		if ival < 0 {
    18  			ival = -1 * ival
    19  			minus = true
    20  			r[0] = '-'
    21  		} else {
    22  			next = ival / 10
    23  			right = ival - next*10
    24  			ival = next
    25  			buf[ix] = uint8('0' + right)
    26  		}
    27  	}
    28  
    29  	var j int
    30  	var c uint8
    31  	for j = 0; j < ix; j = j + 1 {
    32  		c = buf[ix-j-1]
    33  		if minus {
    34  			r[j+1] = c
    35  		} else {
    36  			r[j] = c
    37  		}
    38  	}
    39  
    40  	return string(r[0:ix])
    41  }
    42  
    43  func Atoi(gs string) int {
    44  	if len(gs) == 0 {
    45  		return 0
    46  	}
    47  	var n int
    48  
    49  	var isMinus bool
    50  	for _, b := range []uint8(gs) {
    51  		if b == '.' {
    52  			return -999 // @FIXME all no number should return error
    53  		}
    54  		if b == '-' {
    55  			isMinus = true
    56  			continue
    57  		}
    58  		var x uint8 = b - uint8('0')
    59  		n = n * 10
    60  		n = n + int(x)
    61  	}
    62  	if isMinus {
    63  		n = -n
    64  	}
    65  
    66  	return n
    67  }