OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [go.test/] [test/] [ken/] [rob1.go] - Rev 700

Compare with Previous | Blame | View Log

// $G $D/$F.go && $L $F.$A && ./$A.out

// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package main

type Item interface {
        Print() string
}

type ListItem struct {
        item Item
        next *ListItem
}

type List struct {
        head *ListItem
}

func (list *List) Init() {
        list.head = nil
}

func (list *List) Insert(i Item) {
        item := new(ListItem)
        item.item = i
        item.next = list.head
        list.head = item
}

func (list *List) Print() string {
        r := ""
        i := list.head
        for i != nil {
                r += i.item.Print()
                i = i.next
        }
        return r
}

// Something to put in a list
type Integer struct {
        val int
}

func (this *Integer) Init(i int) *Integer {
        this.val = i
        return this
}

func (this *Integer) Print() string {
        return string(this.val + '0')
}

func main() {
        list := new(List)
        list.Init()
        for i := 0; i < 10; i = i + 1 {
                integer := new(Integer)
                integer.Init(i)
                list.Insert(integer)
        }

        r := list.Print()
        if r != "9876543210" {
                panic(r)
        }
}

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.