《go语言程序设计》第九章练习

来源:互联网 发布:金融网络销售赚钱吗 编辑:程序博客网 时间:2024/05/18 03:25
//9.3 代码

package main

import (
    "fmt"
)

type tester interface{}

func main() {
    var map1 = map[tester]tester{"ket": 13, 10: true, "csc": true, true: "sa"}
    fmt.Println(map1)
}


//9.4 代码
package main

import (
    "fmt"
)

type people struct {
    name string
    num int
}

type tester interface{}

func main() {
    human := people{"wangdaye", 22}
    it := make([]tester, 8)
    it[0], it[1], it[2], it[3], it[4], it[5], it[6], it[7] = 1, "hello", 3.14, true, "wang", -2,human, 'c'
    for index, element := range it {
        if value, ok := element.(int); ok {
            fmt.Printf("it[%d] is an int,value =%d\n", index, value)
        } else if value, ok := element.(string); ok {
            fmt.Printf("it[%d] is a string,value =%s\n", index, value)
        } else if value, ok := element.(people); ok {
            fmt.Printf("it[%d] is a people,value =%v\n", index, value)
        } else if value, ok := element.(bool); ok {
            fmt.Printf("it[%d] is a bool,value =%v\n", index, value)
        } else {
            fmt.Printf("it[%d] is other type.\n", index)
        }
    }
}


//9.5 代码
package main

import (
    "fmt"
    "reflect"
)

type student struct {
    Num string
    Name string
    Sex string
    Score float32
}

func SetValue(s interface{}) {
    v := reflect.ValueOf(s)
    if v.Kind() != reflect.Ptr || !v.Elem().CanSet() {
        fmt.Println("Cannot set")
        return
    } else {
        v = v.Elem()
    }

    v.Field(0).SetString("1708")
    v.Field(1).SetString("wang")
    v.Field(2).SetString("男")
    v.Field(3).SetFloat(66.6)
    v.Field(2).SetString("女")

    //    for i := 0; i <</span> v.NumField(); i++ {
    //        switch v.Field(i).Kind() {
    //        //        case reflect.Int:
    //        //            v.Field(i).SetInt(1708)
    //        case reflect.String:
    //            v.Field(i).SetString("daye")

    //        case reflect.Float32:
    //            v.Field(i).SetFloat(66.6)
    //        }
    //    }
}

func main() {
    stu := student{"1304", "wangdaye", "女", 99.9}
    SetValue(&stu)
    fmt.Println(stu)
}
ps:做题的时候不会的有参考书上,网上以及请教别人,所以那个分类(原创,转载,翻译)我也不知道怎么区分,如有雷同,那估计就是看的同一本书吧,哈哈。

原创粉丝点击