最も基本的なデバッグツールを試してみませんか?
package main
import "fmt"
type myStruct struct {
songs []string
}
func main() {
s1 := myStruct{songs:[]string{"Master of Puppets", "Battery"}}
foo(s1)
}
func foo(s myStruct) {
// Does something with s
for i:=0;i<len(s.songs);i++ {
fmt.Printf("s.songs[%d]=\"%s\"\n",i, s.songs[i])
}
}
出力:
s.songs[0]="Master of Puppets"
s.songs[1]="Battery"
あなたが本当にあなたの構造が正しくあなたの主な機能の内部で初期化されたかどうかをテストしたい場合:
package main
import "fmt"
type myStruct struct {
songs []string
}
func main() {
s1 := myStruct{songs:[]string{"Master of Puppets", "Battery"}}
foo(s1)
for i:=0;i<len(s1.songs);i++ {
fmt.Printf("s1.songs[%d]=\"%s\"\n",i, s1.songs[i])
}
}
func foo(s myStruct) {
// Does something with s
fmt.Printf("foo has finished its work!\n")
}
出力:
foo has finished its work!
s1.songs[0]="Master of Puppets"
s1.songs[1]="Battery"
あなたがしたい場合は 必ず両方のmain()とFOOを作る()同じオブジェクトで作業している、これを試してみてください。
は
package main
import "fmt"
type myStruct struct {
songs []string
}
func main() {
s1 := myStruct{songs:[]string{"Master of Puppets", "Battery"}}
foo(&s1)
fmt.Printf("main() says: s1 lives in the address:%p\n",&s1)
}
func foo(s *myStruct) {
// Does something with s
fmt.Printf("foo() says: s lives in the address:%p\n",s)
}
出力:
foo() says: s lives in the address:0x10434120
main() says: s1 lives in the address:0x10434120
次回は、あなたの質問に、より具体的なことしてみてください。
乾杯。
目に見える現象がないものをテストするのは難しいでしょう。 –
ユニットテストの対象となるものをメインの外に移動します。 – JimB
初期化をテストしますか?どうしてそうするか? – jnmoal