はじめに
英語の勉強でリーディングを始めました。Go言語の勉強も兼ねてEffective Goを翻訳していければと思います。
自分の勉強用の翻訳なので、直訳かつ、訳に間違いがあるかもしれませんが、ご容赦いただければ幸いです。
もし間違いを見つけた方はコメントいただけると嬉しいです。
念のため、Effective GoのCopyrightを記載します。
コンテンツは Creative Commons Attribution 3.0 License、コードはBSD licenseとなっているため、適切に引用や翻訳すれば問題なさそうでした。
Effective Go 翻訳 – Semicolons
Like C, Go’s formal grammar uses semicolons to terminate statements, but unlike in C, those semicolons do not appear in the source. Instead the lexer uses a simple rule to insert semicolons automatically as it scans, so the input text is mostly free of them.
https://golang.org/doc/effective_go#semicolons
C言語のように、Goの正式な文法はステートの終了にセミコロンを使用しますが、C言語と異なり、それらセミコロンはソースコードの中に表示しません。代わりに、レクサー(?)はスキャン時にセミコロンを自動的に挿入するシンプルなルールを使うため、ほとんどの入力テキストはセミコロンから解放されます。
The rule is this. If the last token before a newline is an identifier (which includes words like
https://golang.org/doc/effective_go#semicolonsint
andfloat64
), a basic literal such as a number or string constant, or one of the tokens
ルールはこれです。もし改行前の最後のトークンが識別子(intやfloat64のような単語を含む)、数値や文字列定数など基本的なリテラル、または以下のトークンの一つであれば、
break continue fallthrough return ++ -- ) }
the lexer always inserts a semicolon after the token. This could be summarized as, “if the newline comes after a token that could end a statement, insert a semicolon”.
https://golang.org/doc/effective_go#semicolons
A semicolon can also be omitted immediately before a closing brace, so a statement such as
レクサー(?)はいつもトークンの後にセミコロンを挿入します。これは “もし改行がステートを終了できるトークンの後に来るなら、セミコロンを挿入する。” と要約できます。
閉じ括弧の直前のセミコロンは省略することもできるため、次のような文章はセミコロンを必要としません。
go func() { for { dst <- <-src } }()
needs no semicolons. Idiomatic Go programs have semicolons only in places such as
https://golang.org/doc/effective_go#semicolonsfor
loop clauses, to separate the initializer, condition, and continuation elements. They are also necessary to separate multiple statements on a line, should you write code that way.
慣用的なGoプログラムは、イニシャライザと条件、継続の各項目を分けるため、forループ節のような箇所でのみセミコロンを持ちます。また、一行の複数の文章を区切る必要もあり、そのようにコードを記述するべきです。
One consequence of the semicolon insertion rules is that you cannot put the opening brace of a control structure (
https://golang.org/doc/effective_go#semicolonsif
,for
,switch
, orselect
) on the next line. If you do, a semicolon will be inserted before the brace, which could cause unwanted effects. Write them like this
セミコロンを挿入するルールの一つの結果は、あなたは制御構造(if
, for
, switch
, select
)の開き括弧次の行に置くことができないということです。もし次の行に置くとすると、セミコロンは括弧の前に挿入され、望んでいない影響をもたらすでしょう。次のように括弧を記述してください。
if i < f() {
g()
}
not like this
https://golang.org/doc/effective_go#semicolons
次のようにではなく
if i < f() // wrong!
{ // wrong!
g()
}
【自分用】文法/熟語メモ
as(〜する時)
As I entered the hotel, I saw him | 私がそのホテルに入った時、彼を見ました。 |
He arrived just as I was leaving. | ちょうど私が出かけようとしていたときに彼が着いた。 |
【自分用】単語メモ
closing brace | 右中括弧 |
omit | 省く、省略する |
consequence | ・[可算名詞] 結果、成り行き ・[不加算名詞] 重大性、重要さ |
コメント