golang での ls-lR

Menu


golang を install する

   brew install go

GOROOT/GOPATHの設定

    export GOPATH=/Users/kono/src/go
    path=($GOPATH/bin $path)
    export GOROOT="/usr/local/opt/go/libexec"
    export GO111MODULE=on

を ~/.zshenv に書く (.zhsrc でも良い)

あるいは、server上で

   singularity shell --shell /bin/zsh  /mnt/nvme0/singularity/teachers/kono/os_complete/os_complete.sif
 

とする


Direcoty を作る

    % mkdir -p ~/src/go/src/FileWriteGo/ie.u-ryukyu.ac.jp/hg/teacher/kono/os/FileWriteGo2019
    % cd ~/src/go/src/FileWriteGo/ie.u-ryukyu.ac.jp/hg/teacher/kono/os/FileWriteGo2019

hg repository にそった名前にすること。studuents/y18/e18...


go module を作る

    % go mod init ie.u-ryukyu.ac.jp/hg/teacher/kono/os/FileWriteGo2019                     


main.go を作る

    package main
    import (
    "fmt"
    )
    func main() {
            fmt.Println("hello")
    }


go build


go install

   $GOPATH/bin/FileWriteGo2019

ができるので実行する。


ReadDirFSを使う

ReadDirFS を使って Directoryに access する 例題はこんな感じ

go を使った例題


debug

    +braun+os_complete+kono cat go.mod 
    module ie.u-ryukyu.ac.jp/teacher/kono/os/fileWrite
    go 1.19
    +braun+os_complete+kono dlv debug ie.u-ryukyu.ac.jp/teacher/kono/os/fileWrite
    Type 'help' for list of commands.
    (dlv) b main.main
    Breakpoint 1 set at 0x4c2b33 for main.main() ./main.go:13
    (dlv) continue
    > main.main() ./main.go:13 (hits goroutine(1):1 total:1) (PC: 0x4c2b33)
         8:
         9: func sub1() {
        10:         fmt.Println("sub1")
        11: }
        12:
    =>  13: func main() {
        14:         u := fileIO.FileIO{}
        15:         getOpts(&u)
        16:         fmt.Println("Hello, main !!"+ u.FileName)
        17:         u.FileWrite()
        18:         sub1()
    (dlv) n
    > main.main() ./main.go:14 (PC: 0x4c2b3a)
         9: func sub1() {
        10:         fmt.Println("sub1")
        11: }
        12:
        13: func main() {
    =>  14:         u := fileIO.FileIO{}
        15:         getOpts(&u)
        16:         fmt.Println("Hello, main !!"+ u.FileName)
        17:         u.FileWrite()
        18:         sub1()
        19:         fmt.Println("Hello, 世界")
    (dlv) n
    > main.main() ./main.go:15 (PC: 0x4c2b81)
        10:         fmt.Println("sub1")
        11: }
        12:
        13: func main() {
        14:         u := fileIO.FileIO{}
    =>  15:         getOpts(&u)
        16:         fmt.Println("Hello, main !!"+ u.FileName)
        17:         u.FileWrite()
        18:         sub1()
        19:         fmt.Println("Hello, 世界")
        20: }
    (dlv) p &u
    ("*ie.u-ryukyu.ac.jp/teacher/kono/os/fileWrite/fileIO.FileIO")(0xc000134090)
    (dlv) x -fmt hex -count 20 -size 8 0xc000134090
    0xc000134090:   0x0000000000000000   0x0000000000000000   0x0000000000000000   0x0000000000000000   0x0000000000000000   0x0000000000000000   0x0000000000000000   0x0000000000000000   
    0xc0001340d0:   0x0000000000000000   0x0000000000000000   0x0000000000000000   0x0000000000000000   0x0000000000000000   0x0000000000000000   0x0000000000000000   0x0000000000000000   
    0xc000134110:   0x0000000000000000   0x0000000000000000   0x0000000000000000   0x0000000000000000   
    (dlv)

Shinji KONO / Fri Nov 1 14:22:02 2024