[日常] Go語言聖經--介面約定習題2

來源:互聯網
上載者:User

標籤:ack   struct   roo   return   tree   elements   imp   highlight   數組   

練習 7.3: 為在gopl.io/ch4/treesort (§4.4)的*tree類型實現一個String方法去展示tree類型的值序列。

package mainimport(        "fmt"        "bytes")func main(){        //定義數組        arr:=[...]int{6,2,1,3,4,5}        var t *tree        for i:=0;i<len(arr);i++{                t=add(t,arr[i])        }           //t1:=Sort(arr[:],t)        //fmt.Println(arr)        fmt.Println(t)}/*練習 7.3: 為在gopl.io/ch4/treesort (§4.4)的*tree類型實現一個String方法去展示tree類型的值序列。*/func (t *tree)String()string{        var buf bytes.Buffer        var data []int        data=appendValues(data,t)        buf.WriteByte(‘{‘)        for _,v:=range data{                if buf.Len() > len("{"){                        buf.WriteByte(‘ ‘)                }                   //重點:使用了介面約定                fmt.Fprintf(&buf,"%d",v)        }           buf.WriteByte(‘}‘)        return buf.String()}type tree struct {    value       int     left, right *tree}// Sort sorts values in place.func Sort(values []int,root *tree) *tree {    //var root *tree    for _, v := range values {        root = add(root, v)    }       fmt.Println(root)    appendValues(values[:0], root)    return root}// appendValues appends the elements of t to values in order// and returns the resulting slice.func appendValues(values []int, t *tree) []int {    if t != nil {        values = appendValues(values, t.left)        values = append(values, t.value)        values = appendValues(values, t.right)    }    return values}func add(t *tree, value int) *tree {    if t == nil {        // Equivalent to return &tree{value: value}.        t = new(tree)        t.value = value        return t    }    if value < t.value {        t.left = add(t.left, value)    } else {        t.right = add(t.right, value)    }    return t}

  

[日常] Go語言聖經--介面約定習題2

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.