goo blog サービス終了のお知らせ 

パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

4時間GO言語をやってみる

2019-04-15 | その他

初心者(私)がやるバグをしばし紹介

以前少しは習得したはずだけど1年以上放置していればまあ忘れます。

 

./Answer.go:4:8: imported and not used: "bufio"

使ってないインポートでエラー


./Answer.go:5:8: imported and not used: "strings"

最初のサンプルにすでに2つエラーがある

 



./Answer.go:29:22: undefined: os

        fmt.Fprintln(os.Stderr, 5,"Debug messages...")
標準エラーに2つの形式をそのまま表示できるか試す
カラムまで教えてくれるのはいいかも


./Answer.go:29:22: undefined: os

        fmt.Fprintln(os.Stderr, "Debug messages...")
最初のサンプルのコメントアウトでエラーとは

import "os"
これがなかったらしい

最初にトライしてみた方も動く
        fmt.Fprintln(os.Stderr, 5,"Debug messages...")

 


fmt.Scan(&width, &height, &myId)
最初から見ないでいた。この & あまりいい未来が見えない

 



go言語、なにがいいのか調べてみると
並列処理に向いている
速度が速い
速度のため、あえて最新を取り入れていない
googleだから安心

といった内容
個人的には、速度が速いはマル。

 



いかん1時間もたっていないのに速攻で捨てようとしている
サッカー漫画の桐木くんもびっくりだ

 



もう少し頑張ってみよう


./Answer.go:18:15: type []string is not an expression
        mp := [] string
配列定義に失敗{}も必要
        mp := [] string{}
        for i := 0; i < height; i++ {
            var row string
            fmt.Scan(&row)
            mp = append(mp, row)
            
        }
        fmt.Fprintln(os.Stderr, mp)

標準で配列も出力できる
[...12...21... .X.X0X2X0X.X. .010..1..0100 2X1X2X.X2X1X2 1...........1 .X.X2X2X2X.X. 1...........1 2X1X2X.X2X1X2 0010..1..010. .X.X0X2X0X.X. ...12...21...]
区切り文字はスペース



次に配列の一部を変更できるか
Standard Error Stream:

./Answer.go:25:11: non-name mp[1] on left side of :=
mp[1]:="55555"


ここは=
mp[1]="55555"
[..0022.2200.. 55555 2..210.012..2 .X0X1X1X1X0X. .20.11111.02. .X2X.X.X.X2X. .20.11111.02. .X0X1X1X1X0X. 2..210.012..2 .X.X.X1X.X.X. ..0022.2200..]


さてそれではこのピンポイント取れるか?
        fmt.Fprintln(os.Stderr, mp)
        fmt.Fprintln(os.Stderr, mp[5][2:6])

[...222.222... 55555 .0.1.222.1.0. 1X0X1X0X1X0X1 1....0.0....1 2X.X0X.X0X.X2 1....0.0....1 1X0X1X0X1X0X1 .0.1.222.1.0. .X1X0X0X0X1X. ...222.222...]
.X0X

なかなかやる


これならどうだー
        mp[5][5]="5"
./Answer.go:27:17: cannot assign to mp[5][5]



まあPythonでもできないし、それならこれは
        mp[5]= mp[5][0:5]+"5"+mp[5][6:]
        fmt.Fprintln(os.Stderr, mp[5])

0X0X05.X0X0X0

これぐらいできるなら、実装できそうな気はする


構造体も必要なので
type Unit struct {
    entityType, owner, x, y, param1, param2 int
}

            u=Unit{entityType, owner, x, y, param1, param2}
./Answer.go:34:13: undefined: u

            u:=Unit{entityType, owner, x, y, param1, param2}


最終的に作ったもの

go言語の特徴と思える所を赤にしてみました。


package main

import "fmt"
import "os"
//import "bufio"
//import "strings"

type Unit struct {
    entityType, owner, x, y, param1, param2 int
}

func main() {
    var width, height, myId int
    fmt.Scan(&width, &height, &myId)
    
    for {
        mp := [] string{}
        for i := 0; height > i; i++ {
            var row string
            fmt.Scan(&row)
            mp = append(mp, row)
            fmt.Fprintln(os.Stderr, row)
        }

        var entities int
        fmt.Scan(&entities)
        u:=[] Unit{}
        for i := 0; entities > i; i++ {
            var entityType, owner, x, y, param1, param2 int
            fmt.Scan(&entityType, &owner, &x, &y, ¶m1, ¶m2)
            u = append(u,Unit{entityType, owner, x, y, param1, param2})
        }
        
        for i :=0; len(u) > i; i++{
            fmt.Fprintln(os.Stderr, u[i])
        }
        fmt.Println("BOMB 6 5")// Write action to stdout
    }
}

ここまでで今回は終了

これでなければというのがないと、なかなか続けにくい

 

 

( 半角の”<”はタグと認識されるのでプログラムはあえて逆にしています)

 

 

¶これは半角の&paraが変換されてしまったらしい。

この & あまりいい未来が見えない

予言が的中してしまった。


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。