下記のようにカッコでくくることも出来る。
import ( "container/list" "fmt" ) |
構造体は、「type XXXXX struct」。変数とその宣言はc言語等と逆。actionscriptと同じ。
type CELL struct { index int data string } |
関数は「func」になる。この場合、戻り値の型は「*list.Element」
func SearchCELLbyData(l *list.List, data string) *list.Element { for v := l.Front(); v != nil; v = v.Next() { if v.Value.(*CELL).data == data { return v } } return nil } |
リストに構造体を入れてその構造体にアクセスする場合は、「v.Value.(*CELL).data」というような感じになる。
package main // go build helloworld.go import ( "container/list" "fmt" ) type CELL struct { index int data string } func NewCELL(index int, data string) *CELL { if index < 0 { return nil } f := CELL{index, data} return &f } func SearchCELLbyData(l *list.List, data string) *list.Element { for v := l.Front(); v != nil; v = v.Next() { if v.Value.(*CELL).data == data { return v } } return nil } func main() { l := list.New() l.PushBack( NewCELL( 1, "Apple000" ) ) l.PushBack( NewCELL( 2, "Apple001" ) ) l.PushBack( NewCELL( 3, "Apple002" ) ) l.PushBack( NewCELL( 4, "Apple003" ) ) l.PushBack( NewCELL( 5, "Apple004" ) ) l.PushBack( NewCELL( 6, "Apple005" ) ) rc := SearchCELLbyData(l, "Apple001") fmt.Printf("%v\n", rc.Value.(*CELL) ) l.Remove( rc ) // uniquify(l) for e := l.Front(); e != nil; e = e.Next() { ee := e.Value.(*CELL) fmt.Printf("%v\n", ee.index) fmt.Printf("%v\n", ee.data) } } |