How to dictate Go names, where capitalisation controls visibility
Capitalisation in Go is not style, it is access control: a PascalCase identifier is exported from its package and a camelCase one is not. Choosing between VoiceGem's two commands is therefore an API decision, and the Deterministic Pass never adjusts what you said.
A seven-word exported declaration takes roughly 8.1 seconds to type and roughly 2.6 seconds to say. (sources: Dhakal, Feit, Kristensson & Oulasvirta, “Observations on Typing from 136 Million Keystrokes”, CHI 2018, 168,000 participants, 136 million keystrokes; Yuan, Liberman & Cieri, “Towards an Integrated Understanding of Speaking Rate in Conversation”, Interspeech 2006, 2,438 American English telephone conversations (Switchboard corpus). The speech figure is conversational rate, not a measured dictation rate — no such measurement exists.)
func NewConnectionPool()This tool runs entirely in your browser. Nothing you type is sent anywhere, stored, or logged.
Step by step
- 1
Decide whether the name is part of your package API
Choose the command before you speak. A PascalCase name is visible to importers and a camelCase one is not, so the decision precedes the dictation.
- 2
Say “pascal case” to export
Speak the command then the words. VoiceGem capitalises every word including the first, which is what makes the identifier exported.
- 3
Say “camel case” to keep it internal
Use the other command for helpers and fields you do not want importers touching. The lowercase first letter is the whole mechanism.
- 4
Do not rely on a formatter to fix it
Check the case yourself. Gofmt normalises whitespace and never changes capitalisation, because changing it would change your package's public interface.
Go is the only language here where a casing command changes program behaviour
Elsewhere in this set, picking the wrong casing command produces a name that violates a style guide. In Go it produces a different public API — an accidentally exported helper becomes part of your package's contract, and an accidentally unexported constructor cannot be called by anyone.
The Deterministic Pass is the right tool for that precisely because it never adjusts anything. VoiceGem applies exactly the command you said and has no model of surrounding code, so there is no circumstance in which a dictated Go name is quietly recapitalised to match its neighbours.
Where the manual way breaks
Go names are short by convention and typing them is quick. The language's style guide actively discourages the long descriptive names that make dictation pay elsewhere.
Struct definitions are the exception worth speaking. A struct with eight fields mixing exported and unexported names is eight capitalisation decisions in a row, and getting one wrong is an API mistake rather than a formatting one. Dictating the block in VoiceGem makes each decision an explicit spoken command rather than a shift key you did or did not press.
Doing this somewhere else? the casing converter on this site, dictating Go doc comments specifically, dictating Go functions, or naming things in Java by voice, step by step.
Common questions
No. Gofmt normalises whitespace and never changes capitalisation, because changing it would alter your package's public interface.
Pascal case. It capitalises every word including the first, and that leading capital is what makes an identifier visible to importers.
No, and it does not try. The Deterministic Pass has no model of surrounding code and applies exactly the command you said.
Check a struct's field names against both casing styles.
Open the tool