30日の行く:日2と3


どうやって


これは、日2と3のための私のgolang学習のための私のログ更新です.私は実際に何かを構築を開始するかゆみをしてきた.私はかなりその点に近づいている.しかし、その前に、私は機能、方法と構造を経験したいです.それが完了したら、私はいくつかの簡単なおもちゃのアプリケーションを構築すると少しの深さを開始します.

2日目


私は、この日にかなり少ししました.

データ構造


アレイ

  • Javaのような言語でのように囲碁での配列.すべての配列は、宣言されたときに型とサイズを必要とします.
  • 初期化された配列のすべての値はゼロ
  • var array [40]int
    
    // Declare and initialize
    array2 := [5]int{1, 3, 4, 5, 6}
    
    // Access an index in the array
    fmt.Println(array[20])
    
    // add something to an index in the array
    array[10] = 300
    
    // get the size of the array
    fmt.Println(len(array))
    
  • golangは2次元配列を持つ.これらは次のように構成されている
  • var twoD [4][9]int
    for i := 0; i < 4; i++ {
        for j := 0; j < 9; j++ {
     twoD[i][j] = i + 
        }
    }
    

    スライス

  • スライスは、可変サイズの配列のように動作するデータ構造体です.それは、JavaのArrayListまたはPythonのリスト(スライスのすべての項目が同じ型でなければならないことを注意してください)のようです.
  • スライスgoを初期化するには組み込み関数make
  • // Create a slice pass the type and initial size to make
    sl := make([]string, 3)
    
    // Declaring and initializing a slice
    t := []string{"ab", "bc", "cd"}
    
    // Access an item in a slice
    fmt.Println(sl[2])
    
    // set an index in a slice
    sl[1] = "Hello"
    
  • スライス内に複数の項目を追加するには、組み込み関数を使用しますappend . append関数はスライスとスライスを加算し、新しいスライスを返します
  • sl = append(sl, "new")
    
  • スライスは、builtincopy 機能
  • // Create a new slice with the length of the slice you want to copy
    c := make([]string, len(sl))
    // copies sl into c
    copy(c, sl)
    
  • スライスリストのスライスのサポート
  • // creates a nes slice from index 1 to 2
    newSlice := sl[1:3]
    // creates slice from index 0 to 3 (excluding 4)
    newSlice = sl[:4]
    // slice from index 2 to the last one
    newSlice = sl[2:]
    
  • スライスは多次元データ構造をサポートする.内側スライスの長さは可変である.
  • twoD := make([][]int, 3)
    for i := 0; i < 3; i++ {
        innerLen := i + 1
        twoD[i] = make([]int, innerLen)
        for j := 0; j < innerLen; j++ {
     twoD[i][j] = i + j
        }
    }
    
    // result = [[0] [1 2] [2 3 4]]
    

    マップ

  • これらはPythonディッシュのようなキー/値の連想データ構造です
  • 用途make 空マップを作成するには
  • m := make(map[string]int)
    
    // declare and initialize a map
    m2 := map[string]int{"foo": 4, "bar": 40}
    
    // set key/value pairs
    m["one"] = 2
    m["two"] = 3
    
    // get a value with a key
    v := m["one"]
    
    // get number of key/value pairs
    fmt.Println(len(m))
    
    // To delete a key value pair use builtin function
    delete(m, "two")
    
  • マップから取得すると、2番目の値が返されます.value, prs := map[key] . もしキーが地図にあるなら、PRSはtrueで、それがそうでないならば、false
  • _, prs := m["two"]
    
  • 空白識別子_ は値が不要な場合に使用されます.goが宣言されたすべての変数を使用する必要があるため、これが必要です.
  • 範囲

  • Goでは、配列、スライス、マップ、および文字列のようなデータ構造を反復する範囲を使用できます
  • // array, slices
    for index, value := range array {
        fmt.Println(value)
    }
    
    //map 
    for key, value := range exMap {
        fmt.Printf("%s -> %s\n", key, value)
    }
    
    // iterate over map keys only
    for key := range exMap {
        fmt.Println(key)
    }
    
    // iterate over strings
    for index, ru := range "Golang" {
        fmt.Println(ru)
    }
    

    3日目


    今日はあまりうまくいかなかったけど、おもしろいことがあった.

    関数

  • 関数は複数の戻り値を持つことができます.これらの関数は通常、関数から結果とエラー値を返すために使用されます
  • Variadic関数は任意の数の引数で呼び出すことができます
  • 関数は以下のように定義されます:
  • // function structure
    // function name(arguments) return type {}
    func sayHello(name string) string {
        return "Hello " + name 
    }
    // call the function sayHello("Kacha")
    
    // function with multiple return values
    func names() (string, string) {
        return "Scott", "Ramona"
    }
    
    // variadic function
    func add(nums ...int) {
        total := 0
        for _, num := range nums {
     total += num
        }
        return total
    }
    
  • また、クロージャを形成することができます匿名機能をサポートします.私は全くまだ閉鎖を理解していないので、私は別のブログ記事でそれを持っているでしょう.
  • ...


    私は毎日試してみてブログをしたいが、それは可能性がない可能性がありますので、私は少なくとも2、3日ごとに私の進歩をブログします.