Go学习笔记03

来源:互联网 发布:程序员杂志app 编辑:程序博客网 时间:2024/06/14 12:00

Go包的可见性与类型

1. package情况说明

t1.gomain.go在同一个文件夹下,main函数在main.go中。

2. t1.go内容

package main// 小写开头,未公开的类型type myType intfunc MyNew(val int) myType {    return myType(val) // 未公开数据类型可以在返回值中使用}// 类型公开,部分成员不公开type MyStruct struct { // 对外公开    Name string // 对外公开    age  int    // 对外不公开    Vip  bool}// user和Admin组合,正确的搭配方式,见下type user struct { // 结构不公开,但成员公开    Name string    Age  int}// 对外而言,Admin可以访问 Name, Age, Leveltype Admin struct {    user  // user不公开,不可直接访问,但是它的成员提升到Admin可以直接访问    Level int}

3. main.go内容

// test.go project main.gopackage mainimport (    "fmt"    "reflect")func main() {    fmt.Println("Hello")    //b := myType{}  // 错误,只有大写字母开头的可以被外面的直接使用    a := MyNew(1) // 同一个package下的文件互相调用不用引入    fmt.Printf("%T\n", a)    fmt.Println(reflect.TypeOf(a), reflect.TypeOf(1))    // 下面的是错误的,因为(type)只能用在接口类型上    /*        switch v := a.(type) {        case int:            fmt.Println("int")            break        case string:            fmt.Println("string")            break        default:            break        }    */}