zoukankan      html  css  js  c++  java
  • Go struct

    命名结构体类型S不可以定义一个和自己拥有一样结构的类型的作为成员变量,但是可以定义一个指针。

    package main
    
    type tree struct {
        value int
        left, right *tree
    }
    
    func Sort(values []int)  {
        var root *tree
        for _, v := range values {
            root = add(root, v)
        }
        appendValues(values[:0], root)
    }
    
    func add(t *tree, value int) *tree {
        if t == nil {
            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
    }
    
    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
    }

    注意:如果一个成员变量的首字母是大写可以导出,这也是一个特性。

     函数中传值一般都是直接操作指针,下面是指针操作结构体几种方式

        pp := &image.Point{2, 3}
        //pp 可以用下面两行的方式实现
        qq := new(image.Point)
        *qq = image.Point{2, 3}

    匿名成员

    package main
    
    type Point struct {
        X, Y int
    }
    
    type Circle struct {
        Point
        Radius int
    }
    
    type Wheel struct {
        Point
        Spokes int
    }
    
    func main() {
        w := Wheel{
            Point:  Point{1, 2},
            Spokes: 3,
        }
        c := Circle{
            Point:  Point{2, 3},
            Radius: 2,
        }
    }

    随笔而已,我还不认为自己有能写blog的水平。

    一个没有高级趣味的人。 email:hushui502@gmail.com
  • 相关阅读:
    js 去掉文本域中的空格
    网站开发步骤
    获取客户端、服务器、本地IP地址
    c#用反射原理递归遍历复杂实体对象
    jquery1.8在ie8下not无效?
    状态模式
    虚函数和抽象函数的区别
    HashTable、HashSet和Dictionary的区别
    sql视图学习笔记--视图
    html背景为灰色 不能操作,中间div可以操作
  • 原文地址:https://www.cnblogs.com/CherryTab/p/12313636.html
Copyright © 2011-2022 走看看