質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

解決済

2回答

1087閲覧

Goのbyte型にコードポイントを格納する理由

teaAI

総合スコア36

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

0クリップ

投稿2022/08/10 03:27

前提

下記ソースコードにあるように、byte型にてAsciiの16進数コードポイントが定義されている理由として、どのような意図が考えられるのでしょうか?
浅学のためご教授(理解につながる参考リンクなど)頂けると幸いです。

  • 理解できない箇所
  1. あえてbyte型にコードポイントを持たせる理由(Asciiコード変換後の文字列をstring型として定義しない理由)
  2. ユースケース(メリット)

該当のソースコード

Go

1package main 2 3import "fmt" 4 5func main() { 6 var fileAsciiHex = []byte{ 7 0x0a, 0x26, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 8 } 9 10 fmt.Println(fileAsciiHex) // [10 38 115 101 114 118 105 99 101 115 47 99 117 115 116 111] 11 fmt.Println(string(fileAsciiHex)) // &services/custo 12 13 // このようにも書ける 14 arr := "&services/custo" 15} 16

補足情報

参考 :
https://github.com/mercari/mercari-microservices-example/blob/main/services/customer/proto/customer.pb.go

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

以下ソースコードはprotoc-gen-goによって自動生成されたソースコードです。
人間が手動で16進数で表記しているわけではありません。
https://github.com/mercari/mercari-microservices-example/blob/main/services/customer/proto/customer.pb.go

推測ですが、文字列にするより16進数で埋め込んだ方がサニタイズ処理が無く、楽になると考えたのではないでしょうか。
Protocol BuffersのソースコードやIssuesに理由が書かれているのではないでしょうか。
探してみて下さい。

似た質問がStack Overflowに存在します。
参考にしてみて下さい。
https://stackoverflow.com/questions/61960313/

投稿2022/08/10 03:33

編集2022/08/10 03:52
slemntqe

総合スコア120

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

teaAI

2022/08/10 09:49

回答&参考リンクまで頂きありがとうございます。
guest

0

自己解決

コメントにて解決ずみ

投稿2022/08/10 09:50

teaAI

総合スコア36

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問