zoukankan      html  css  js  c++  java
  • Go

    package main
    
    import (
        "fmt"
    )
    
    //基类Base
    type Base struct {
        FirstName, LastName string
        Age                 float32
    }
    
    //基类的成员方法
    func (base *Base) HasFeet() {
        fmt.Println(base.FirstName + base.LastName + "has feet! Base")
    }
    
    func (base *Base) Flying() {
        fmt.Println("Base Can flying!")
    }
    
    //子类Sub
    type Sub struct {
        Base
        Area string
    }
    
    //子类的成员方法
    func (sub *Sub) Flying() {
        sub.Base.Flying()
        fmt.Println("Sub flying")
    }
    
    func (sub *Sub) HasFeet() {
        sub.Base.HasFeet()
        fmt.Println("Sub HasFeet")
    }
    
    func main() {
        /*chk := new(Sub)
        chk.Flying()
        chk2 := &Sub{Base{"Bob", "Steven", 2.0}, "China"}
        fmt.Println(chk2.Area)*/
    
        a := new(Sub) //初始化
        a.Flying()
        b := &Sub{Base{"Lin", "Zhi", 2.0}, "China"}
        b.HasFeet()
    }
    匿名组合
    package main
    
    import (
        "fmt"
    )
    
    /********************************************************/
    //define an interface
    
    type Usb interface {
        getName() string
        connect()
    }
    
    /********************************************************/
    
    type Phone struct {
        name string
    }
    
    //Phone类型实现Usb接口
    
    func (phone Phone) getName() string {
        return phone.name
    }
    
    func (phone Phone) connect() {
        fmt.Println(phone.name, "connect")
    }
    
    /********************************************************/
    
    func main() {
        var p Usb //定义一个接口类型的变量 p
        p = Phone{name: "SunXing"}
        p.connect()
    
        //查询接口
        if _, ok := p.(Usb); ok {
            fmt.Println("Yes")
        }
    
        // interface{} 是可以指向任何对象的 Any 类型
        var a interface{} = Phone{"abc"}
        fmt.Println(a)
    
        var q1 *Phone
        q1 = &Phone{"def"}
        fmt.Println("gh+" + q1.name)
        q1.connect()
    
        q := &Phone{"Iphone"}
        p1 := q
        p1.connect()
    }
    接口
    package main
    
    import (
        "fmt"
        "time"
        //"time"
    )
    
    func Count(ch chan int, i int) {
        fmt.Println("i1:", i)
        ch <- i
        fmt.Println("i2:", i)
    }
    func main() {
        //    chs := make([]chan int, 5)
        //    for i := 0; i < 5; i++ {
        //        chs[i] = make(chan int)
        //        go Count(chs[i], i)
        //    }
    
        //    //time.Sleep(3 * time.Second)
    
        //    for _, ch := range chs {
        //        v := <-ch
        //        fmt.Println("v:", v)
        //    }
        //    //time.Sleep(3 * time.Second)
    
        chs := make(chan int, 5)
        for i := 0; i < 10; i++ {
            //chs[i] = make(chan int)
            go Count(chs, i)
        }
    
        //time.Sleep(3 * time.Second)
    
        for i := 0; i < 5; i++ {
            v := <-chs
            fmt.Println("v:", v)
            //time.Sleep(time.Second * 3)
        }
        fmt.Println("exit")
    
    }
    Channel
    package main
    
    import (
        //    "bytes"
        "fmt"
        "io"
        "net"
        "os"
    )
    
    func main() {
        /*if len(os.Args) != 2 {
            fmt.Fprintf(os.Stderr, "Usage: %s host:port", os.Args[0])
            os.Exit(1)
        }
        */
        //service := os.Args[1]
        conn, err := net.Dial("tcp", "172.16.8.156:10086")
        checkError(err)
        fmt.Println("1")
        _, err = conn.Write([]byte("HEAD / HTTP/1.0
    
    "))
        checkError(err)
        fmt.Println("1")
        result, err := readFully(conn)
        checkError(err)
        fmt.Println("1")
        fmt.Println((result))
        os.Exit(0)
    
    }
    func checkError(err error) {
        if err != nil {
            fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())
            //os.Exit(1)
        }
    }
    func readFully(conn net.Conn) ([]byte, error) {
        //defer conn.Close()
        //result := bytes.NewBuffer(nil)
    
        //var buf [32]byte
        buf := make([]byte, 512)
    
        n, err := conn.Read(buf)
        fmt.Println(buf[0:n])
        //result.Write(buf[0:n])
        if err != nil {
            if err == io.EOF {
    
            }
            //return nil, err
        }
    
        return buf, nil
    }
    Socket
    package main
    
    import (
        //    "flag"
        //    "fmt"
        "net/http"
    )
    
    func main() {
        /*    host := flag.String("host", "127.0.0.1", "listen host")
              port := flag.String("port", "80", "listen port")  */
    
        http.HandleFunc("/hello", Hello)
    
        err := http.ListenAndServe(":8080", nil)
    
        if err != nil {
            panic(err)
        }
    }
    
    func Hello(w http.ResponseWriter, req *http.Request) {
        w.Write([]byte("Hello World"))
    }
    服务器
    // Test project Test.go
    package main
    
    import (
        "fmt"
        "go/scanner"
        "go/token"
        "strings"
    )
    
    type OnIdent func(ident string, obj string) (float64, bool)
    
    func main() {
    
        fmt.Println("hello world")
    
        m := map[string]interface{}{
            "a": 1.5,
            "b": map[string]float64{
                "c": 2,
            },
            "d": 1.2,
            "e": map[string]float64{
                "e1": 5,
            },
        }
    
        fn := func(ident string, obj string) (float64, bool) {
            val, ok := m[ident]
            var v float64
            switch val.(type) {
            case int:
                if obj != "" {
                    return 0, false
                }
                v = float64(val.(int))
            case float64:
                if obj != "" {
                    return 0, false
                }
                v = val.(float64)
            case map[string]float64:
                va := val.(map[string]float64)
                _, e := va[obj]
                if !e {
                    return 0, e
                }
                v = va[obj]
            default:
            }
            return v, ok
        }
    
        val, ok := fn("b", "a")
        fmt.Println(val, ok)
    
        var s scanner.Scanner
        in := "`bg``gd`"
        str1 := strings.Split(in, ".")
    
        fmt.Println("lenin:", str1[0], len(str1[0]))
    
        fmt.Println("lenin:", len(in))
        fmt.Println(in)
    
        fmt.Println(in)
    
        src := []byte(in)
        fset := token.NewFileSet()
        file := fset.AddFile("", fset.Base(), len(src))
        s.Init(file, src, nil, 0)
    
        i := 1
        fmt.Println(in)
    
        //prev := token.ILLEGAL
    
        for {
            pos, tok, lit := s.Scan()
            if tok == token.EOF {
                break
            }
            fmt.Println("i:", i, "*****", "pos:", pos, "*****", "tok:", tok, "****", "lit=", lit, "*****", len(lit))
            i++
        }
        fmt.Println("dfd", getMax(1, 2, 3, 100, 50))
    }
    
    func getMax(num ...float64) (m float64) {
        fmt.Println(num)
        max := 0.0
        if num != nil && len(num) > 1 {
            max = num[0]
            for i := 1; i < len(num); i++ {
                if num[i] > max {
                    max = num[i]
                }
            }
        }
        return max
    }
    Test
  • 相关阅读:
    c# 生成随机时间
    HttpWebRequest.ReadWriteTimeout 属性
    如果分配给命令的连接位于本地挂起事务中,ExecuteNonQuery 要求命令拥有事务。命令的 Transaction 属性尚未初始化
    Host 'XXX' is not allowed to connect to this MySQL server 解决方案/如何开启MySQL的远程帐号
    C# winform 获取当前路径
    c# 操作符重载
    为何好男人总被坏女人搞定?【转】
    MySQL,SQLSERVER,ORACLE获取数据库表名及字段名
    病毒加壳技术与脱壳杀毒方法解析
    配置linux DNS
  • 原文地址:https://www.cnblogs.com/zhengguiping--9876/p/8274163.html
Copyright © 2011-2022 走看看