🐡

Golang 文字"A"の次の値として"B"を取得したい

2022/09/28に公開

文字の加算をする

以下の例を見てください。
一見するとちょっと不思議なことが起こります。

fmt.Println("H" + "i")
fmt.Println('H' + 'i')

>> Hi
>> 177

なぜこうなるのか

シングルクォーテーションで文字を囲った場合、stringではなくruneと識別されるためです。
結果として、Unicodeのcode pointを整数値で表しています。

runeとは、code pointとはなどは以下の記事が参考になりました。
https://qiita.com/seihmd/items/4a878e7fa340d7963fee

こんなことに使える

文字列 "A"の次の値として "B"を取得したいとき。
私は、GoでExcelの操作ができるライブラリexcelizeを使用したとき、セルの位置を指定する際に使いました。

package main

import "fmt"

func main() {
    fmt.Println(string('A' + 1))
}

参考

https://yourbasic.org/golang/gotcha-concatenate-rune-string/

Discussion