代码之家  ›  专栏  ›  技术社区  ›  pwwolff

如何找到两个符文之间的距离

go
  •  0
  • pwwolff  · 技术社区  · 6 年前

    我正试图解决几个示例编程问题来熟悉这门语言。

    我在一个字符串上迭代如下:

    func main() {
        fullFile := "abcdDefF"
    
        for i := 1; i < len(fullFile); i++ {
            println(fullFile[i-1], fullFile[i], fullFile[i-1]-fullFile[i])
        }
    }
    

    在循环中,我想得到当前符文和前一个符文之间的差异(试图通过找到差异为==32的任何符文对来识别小写-大写对)。

    奇怪的是,减法不能正常工作(事实上,在我期望负数的情况下,减法似乎会产生加法),尽管我希望如此,因为符文是由int32表示的。

    1 回复  |  直到 6 年前
        1
  •  0
  •   pwwolff    6 年前

    明白了:返回的数据类型是一个字节。

    显式转换为int,一切都按预期工作。

    func main() {
        fullFile, _ := ioutil.ReadFile("input/input.txt")
        previous := 0
        current := 0
        for i := 1; i < len(fullFile); i++ {
            previous = int(fullFile[i-1])
            current = int(fullFile[i])
            println(current, previous, current-previous)
        }
    }