一般的な使用でgolangタイプ

golang、種類等、一般的な一般的な使い方は、構造を定義することは非常に重要なキーワード、インターフェイス、ですが、使用方法の他の多くの種類がありますが、これは次のレコードの要約で、研究でいくつかに会いました

  • 定義構造
type Person struct {
    name string
    age int
}

type Mutex struct {}
type OtherMutex Mutex //定义新的类型

func (m *Mutex) Lock(){
    fmt.Println("lock")
}
func (m *Mutex) Unlock(){
    fmt.Println("lock")
}

func main() {
    m := &OtherMutex{} //注意,OtherMutex不具有Lock和Unlock方法
    m.Lock()
}
  • 定義されたインタフェース
type Personer interface{
    ShowName(s string)
}
  • タイプ定義
type Myint int  //定义一个新的类型,

//定义一个类型方法
func (m Myint) showValue() {
    fmt.Println("show int", m)
}

func main() {
    var m Myint = 9 //变量声明
    m.showValue()
}

新定义的类型,可以定义方法,
如上例的 showValue()
  • 別名定義

    そして、同じタイプの元の定義は、それが別名の別名であります

type nameMap = map[string]interface{}

func main() {
   m :=make(nameMap)
   m["name"] = "golang"
   fmt.Printf("%v", m)
}

另外别名定义和类型定义有点区别
 
type A int32   //类型定义,生成新的
type B = int32 //别名定义,仅仅是 alias

func main() {
    var a A = 333
    fmt.Println(a)
    var b B = 333
        b = B(a) //a,b属于不同的类型,所以这里需要强制转换
    fmt.Println(b)

}
  • 定義関数のタイプ
type cb func(s string)  // 定义一个函数类型

//对函数类型再定义方法
func (f cb) ServerCb() error{
    f("cbb")
    fmt.Println("server cb")
    return nil
}

func main() {
    s :=cb(func( s string){
        fmt.Println("sss", s)
    })
    s.ServerCb()
}

実際には、この方法の定義、およびインタフェース定義を達成するための方法は、この感覚に似ているステートメントが複雑すぎる場合は、コードをより明確にすることです、それは、この定義のすべての混乱を思えません。

まあ、それは、使用のいくつかの一般的に使用されるタイプです。

おすすめ

転載: www.cnblogs.com/smartrui/p/11425822.html