golang での ls-lR
Menu
golang を install する
brew install goGOROOT/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 する 例題はこんな感じ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)