7

チュートリアルには、私が推測している知識がない場合、手がかりやリンクなしであなたを独り占めするようないくつかのポイントがあります. だから私はこれらの長さについて申し訳ありません:

http://tour.golang.org/#15

Try printing needInt(Big) too

int は、定数よりも少ないビットが許可されていると思いますか?


http://tour.golang.org/#21

the { } are required.

(Sound familiar?)

どの言語が暗示されていますか?


http://tour.golang.org/#25

(And a type declaration does what you'd expect.)

なぜ単語typeと単語が必要なのstructですか?私は何を期待していたのですか?


http://tour.golang.org/#28

コンストラクターで暗黙のゼロを使用するのはなぜですか? これは、Go による危険な設計選択のように思えます。これに関するhttp://golang.org/doc/go_faq.html以外の PEP などはありますか?


http://tour.golang.org/#30

Make? コンストラクタはありますか?newとはどう違いmakeますか?


http://tour.golang.org/#33

どこdeleteから来たの?私は輸入しませんでした。


http://tour.golang.org/#36

フォーマッターは何の%v略ですか?価値?


http://tour.golang.org/#47

panic: runtime error: index out of range

goroutine 1 [running]:
tour/pic.Show(0x400c00, 0x40ca61)
    go/src/pkg/tour/pic/pic.go:24 +0xd4
main.main()
    /tmpfs/gosandbox-15c0e483_5433f2dc_ff6f028f_248fd0a7_d7c2d35b/prog.go:14 +0x25

私はどういうわけか壊れたと思います....

package main

import "tour/pic"

func Pic(dx, dy int) [][]uint8 {
    image := make([][]uint8, 10)
    for i := range image {
        image[i] = make([]uint8, 10)
    }
    return image
}

func main() {
    pic.Show(Pic)
}

http://tour.golang.org/#59

関数が失敗したときにエラー値を返しますか? すべての関数呼び出しをエラー チェックで修飾する必要がありますか? クレイジーなコードを書いてもプログラムの流れは途切れませんか? たとえばCopy(only_backup, elsewhere);Delete(only_backup)、コピーが失敗します....

なぜ彼らはそれをそのように設計するのでしょうか?


4

2 に答える 2

18
  • #15 :

    int は定数よりも少ないビットを許可されていると思いますか?

    はい、正確に。仕様によると、「数値定数は任意の精度の値を表し、オーバーフローしません」が、intには 32 ビットまたは 64 ビットがあります

  • #21 :

    どの言語が暗示されていますか?

    なし; これは#16をほのめかしています。これは、ループについて同じ言葉で同じことを言っていforます。

  • #25 :

    a type declaration does what you'd expect少し残念ですが、同意します (読者が期待できることを想定しすぎているため...)。ただし、構造体を (structキーワードで) 定義し、型名「Vertex」をそれにバインドしていることを意味します。type Vertex一部 ( http://golang.org/ref/spec#Type_declarationsを参照)

  • #28 :

    初期化されていない構造体がゼロに設定されているという事実は、多くの場合に非常に役立ちます (バッファーなどの多くの標準的な構造体でも使用されます)。

    コンストラクターのみで暗黙的ではありません。これを見て

    var i int; fmt.Println(i)

    これは出力され0ます。これは、プリミティブ型が暗黙のデフォルト値を持つ Java のようなものに似ています。ブール値は偽、整数はゼロなどです。ゼロ値に関する仕様。

  • #30 :

    newはメモリを割り当ててポインタを返しますが、makeはスライス、マップ、およびチャネルにのみ使用される特別な関数です。vsの詳細な説明については、 http: //golang.org/doc/effective_go.html#allocation_newを参照してください。makenew

  • #33 :

    delete、 likeappendまたはcopyは、言語の基本的な演算子の 1 つです。それらの完全なリストを参照してください: http://golang.org/ref/spec#Predeclared_identifiers

  • #36 :

    はい、%v「値」の略です。http://golang.org/pkg/fmt/を参照

  • #47 :

これを試してください:

func Pic(dx, dy int) [][]uint8 {
    image := make([][]uint8, dy) // dy, not 10
    for x := range image {
        image[x] = make([]uint8, dx) // dx, not 10
        for y := range image[x] {
            image[x][y] = uint8(x*y) //let's try one of the mentioned 
                                             // "interesting functions"
         }    
    }
    return image
}
  • #59 :

    言語の設計と規則により、エラーが発生した場所でエラーを明示的にチェックすることが推奨されます (例外をスローし、場合によってはそれらをキャッチする他の言語の規則とは異なります)。場合によっては、これにより Go コードが冗長になりますが、幸いなことに、反復的なエラー処理を最小限に抑えるために使用できる手法がいくつかあります。

    (エラー処理と Goから引用)

于 2012-09-21T13:13:38.070 に答える
3

I'm guessing int's are allowed less bits than constants?

はい、数値定数は高精度の値です。どの言語のintも、他の数値型の精度に近くありません。

Which language is alluded to?

手がかりはありませんが、( )必須で{ }ありオプションであるCおよびJavaから逆です。

Why do we need the word type and the word struct? What was I supposed to expect?

C に精通している場合は、期待どおりに動作します。

Why implicit zeroes in the constructor?

コンストラクターのみで暗黙的ではありません。これを見て

var i int
fmt.Println(i)

これは出力され0ます。これは、プリミティブ型が暗黙のデフォルト値を持つ Java のようなものに似ています。ブール値は false、整数はゼロなどです。

Make? Are there constructors? What's the difference between new and make?

make配列、スライス、またはマップのサイズを初期化するための追加パラメーターを受け入れます。new一方、型へのポインタを返すだけです。

type Data struct {}
// both d1 and d2 are pointers
d1 := new(Data)
d2 := &Data{}

に関してはare there constructors?、作成して参照した場合のみ。これは、通常、Go でコンストラクターを実装する方法です。

type Data struct {}

func NewData() *Data {
    return new(Data)
}

What's the %v formatter stand for? Value?

はい

I return error values when a function fails? ... Why would they design it like that?

私も最初は同じように感じました。私の意見は変わりましたが。必要に応じて std ライブラリからのエラーを無視して、自分で気にしないこともできますが、一度それを処理すると、個人的にはより優れた (そしてより読みやすい) エラー チェックができるようになります。

私が言えることは、私が間違ったことをしていたとき、不必要に感じた繰り返しのエラー処理のように感じたということです. 私がついにそれを正しくやり始めたとき...まあ、私が上で言ったこと。

于 2012-09-21T13:30:19.440 に答える