Не могу объяснить, почему «55» преобразуется в «7» - PullRequest
0 голосов
/ 27 марта 2019
package main

import (
    "fmt"
    "strconv"
)

func main() {
    v := "55"
    if s, err := strconv.Atoi(v); err == nil {
        fmt.Println(string(v)) // 55
        fmt.Println(s)         // 55
        fmt.Println(string(s)) // 7
    }
}

https://play.golang.org/p/8V1npFiC9iH

Ответы [ 2 ]

9 голосов
/ 27 марта 2019

s - это целое число со значением 55, которое является кодировкой ASCII (и UTF-8) символа "7".Вот что напечатано в последнем утверждении.

6 голосов
/ 27 марта 2019

Когда вы звоните s, err := strconv.Atoi("55"), вы превращаете s в целое число. Когда вы делаете string(s) впоследствии, вы запрашиваете строку, содержащую символ, представленный этим целым числом.

Этот персонаж бывает '7'. Попробуйте v := "65", и вы получите 'A' и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...