DRYな備忘録

Don't Repeat Yourself.

【Go言語】別packageのstructを埋め込んだら何でアクセスすればいいんです?

メモ

$GOPATH/src/foo/foo.go

package foo

type Foo struct{
    Bar string
}

main.go

package main

import "fmt"
import "foo"

type Buz struct {
    foo.Foo
}

func main() {

    bar := Buz{}
    fmt.Printf("%+v\n", bar)

    bar.Foo = foo.Foo{Bar:"otiai10"}
    fmt.Printf("%+v\n", bar)
}

実行結果

% go run main.go
{Foo:{Bar:}}
{Foo:{Bar:otiai10}}

まとめ

引用元のpackage名は気にせず、struct名だけでアクセスできる

(同名structでもFoo.Fooでアクセスできるっぽい)

DRY