Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Goの字句解析を覗いてみる
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
mm-masahiro
September 27, 2025
Programming
180
0
Share
Goの字句解析を覗いてみる
mm-masahiro
September 27, 2025
Other Decks in Programming
See All in Programming
AIベース静的検査器の偽陽性率を抑える工夫3選
orgachem
PRO
4
410
ハーネスエンジニアリングにどう向き合うか 〜ルールファイルを超えて開発プロセスを設計する〜 / How to approach harness engineering
rkaga
27
18k
セグメントとターゲットを意識するプロポーザルの書き方 〜採択の鍵は、誰に刺すかを見極めるマーケティング戦略にある〜
m3m0r7
PRO
0
730
過去のレビュー知見をSkillsで資産化した話
pkshadeck
PRO
0
280
SREに優しいTerraform構成 modulesとstateの組み方
hiyanger
2
160
Making the RBS Parser Faster
soutaro
0
650
Symfony AI in Action - SymfonyLive Berlin 2026
chr_hertel
1
110
Surviving Black Friday: 329 billion requests with Falcon!
ioquatix
0
2.6k
属人化しないコード品質の作り方_2026.04.07.pdf
muraaano
0
300
PicoRuby for IoT: Connecting to the Cloud with MQTT
yuuu
2
730
Road to RubyKaigi: Play Hard(ware)
makicamel
1
530
(Re)make Regexp in Ruby: Democratizing internals for the JIT
makenowjust
3
970
Featured
See All Featured
Skip the Path - Find Your Career Trail
mkilby
1
110
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
How to Talk to Developers About Accessibility
jct
2
190
Optimising Largest Contentful Paint
csswizardry
37
3.7k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.4k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
530
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
BBQ
matthewcrist
89
10k
Test your architecture with Archunit
thirion
1
2.2k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Speed Design
sergeychernyshev
33
1.6k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Transcript
Goの字句解析を覗いてみる 2025/9/27 株式会社Voicy 森永 雅大
© Voicy, Inc. func hoge(foo …string) { ~~~ } コンパイル通ると思いますか?
func hoge(foo…string) { ~~~ } 空白なし ① ②
© Voicy, Inc. The Go Programming Language Specification go.dev/ref/spec
© Voicy, Inc. 字句解析とは?
© Voicy, Inc. 字句解析とは? • 文字の並びを解析して、ある言語にとって意味のある最小単位(トーク ン)に分割する仕組み ◦ 字句解析によって、文がトークンに分割される ex.)
var myName = "masahiro"
© Voicy, Inc. 字句解析とは? • 文字の並びを解析して、ある言語にとって意味のある最小単位(トーク ン)に分割する仕組み ◦ 字句解析によって、文がトークンに分割される ex.)
var myName = "masahiro" → var / myName / = / "masahiro"
© Voicy, Inc. Goの字句解析の仕様
© Voicy, Inc. 4つのトークンの種類 • Identifiers • Keywords • Operators
and punctuation • Literals Goの字句解析の仕様
© Voicy, Inc. Identifiers • 変数や関数名などの名前を表すトークン • 1つ以上の文字や数字から成る • 最初の1文字目(character)は、文字(letter)でないといけない
◦ _ は使える ex. 4種類のトークン func voicy() { voicy := "音声配信プラットフォーム " type hiringRole struct { engineer bool } エンジニアが発信しているチャンネル := "https://voicy.jp/channel/1305" }
© Voicy, Inc. Identifiers • 変数や関数名などの名前を表すトークン • 1つ以上の文字や数字から成る • 最初の1文字目(character)は、文字(letter)でないといけない
ex. 4種類のトークン func voicy() { voicy := "音声配信プラットフォーム " type hiringRole struct { engineer bool } エンジニアが発信しているチャンネル := "https://voicy.jp/channel/1305" }
© Voicy, Inc. 空白の扱い • 空白は通常は無視されるが、空白がないと複数あるべきトークンが、別の1つのトー クンとして扱われてしまう場合にはトークンの区切りとして扱われる 空白の扱い var x
= 1 var x=1
© Voicy, Inc. 最長一致のルール 最長一致のルール • 意味のある単位として取れる限り最長の文字列をトークンとして扱う a + 10
a++
© Voicy, Inc. コンパイル通ると思いますか? func hoge(foo …string) { ~~~ }
func hoge(foo…string) { ~~~ } 空白なし ① ②
© Voicy, Inc. コンパイル通ると思いますか? func hoge(foo …string) { ~~~ }
func hoge(foo…string) { ~~~ } 空白なし ① ②
© Voicy, Inc. func hoge(foo…string) {} コンパイル通ると思いますか? 空白あっても なくてもOK!!
音声×テクノロジーでワクワクする社会をつくる