GO基础

232
0

项目地址:https://github.com/xinliangnote/Go

Go 入门的学习笔记,从零开始学 Go,做一个 Go 工程师。

package main

import (
   "encoding/json"
   "fmt"
   "time"
)

type MobileInfo struct {
   Resultcode string `json:"resultcode"`
   Reason     string `json:"reason"`
   Result     struct {
      Province string `json:"province"`
      City     string `json:"city"`
      Areacode string `json:"areacode"`
      Zip      string `json:"zip"`
      Company  string `json:"company"`
      Card     string `json:"card"`
   } `json:"result"`
}

func main(){
     // 变量
     var a int =1
     var c int
     a1:=1
      fmt.Println(a,c,a1)

     // 数组
     var ai [5] int
     var ai2  =[5] int {1,2,3,4,5}
     ai3:=[5][5] int{{1},{2},{3}}
     ai=ai2
     ai=ai3[0]
     fmt.Println(ai,ai2,ai3)


     // 切片 slice
     var bi [] int
     var bi2  =[] int {1,2,3,4,5}
     bi3:=[] int{1,2,3}
     bi=append(bi,1,2,3,4,5)
     bi=bi2[1:3:5]
     bi=bi3[1:3:3]

     // 基于数组来得到切片
     var list = [10]int{1, 2, 3, 4, 56, 7}
     slice3 := list[:5]

     // make方式得到切片
     slice4 :=make([]int,5,5)
     fmt.Println(slice3,slice4) //[1 2 3 4 56]
     fmt.Println(bi,bi2,bi3)
     var as1  =Person{"aaa",16}
     as1.pp()

     // map
     res2 := make(map[string]interface{})
     var res3 map[string]int =make(map[string]int)
     res2["aaa"]=as1
     res3["bbb"]=2

     fmt.Println(as1)
     fmt.Println(res2,res3)

     //循环
     for  i :=1;i<100;i++ {
         fmt.Println(i)
     }

     var i int  =5
     for{
           i++
           if(i>10){
               break
         }
        fmt.Println(i)
     }

     switch(i){
     case 1:
        fmt.Println(1,i)
     case 10:
        fmt.Println(10,i)
     case  11:
        fmt.Println(11,i)
     case 12:
        fmt.Println(12,i)
     default:
        fmt.Println(0)
     }

   switch(i){
   case 1:
      fmt.Println(111,i)
   case 10:
      fmt.Println(1110,i)
   case  11:
      fmt.Println(1111,i)
      fallthrough
   case 12:
      fmt.Println(1112,i)
      fallthrough
   default:
      fmt.Println(110)
   }
   var ch chan string = make(chan string)
   time.Sleep(1*time.Second)

   go customer(ch)
   go producer(ch)


   time.Sleep(1*time.Second)
   fmt.Println("1231")
   close(ch)

   jsonStr := `
      {
         "resultcode": "200",
         "reason": "Return Successd!",
         "result": {
            "province": "浙江",
            "city": "杭州",
            "areacode": "0571",
            "zip": "310000",
            "company": "中国移动",
            "card": ""
         }
      }
   `

   var mobile MobileInfo
   err := json.Unmarshal([]byte(jsonStr), &mobile)
   if err != nil {
      fmt.Println(err.Error())
   }
   fmt.Println(mobile.Resultcode)
   fmt.Println(mobile.Reason)
   fmt.Println(mobile.Result.City)

   b,error :=json.Marshal(mobile)
   if(error!=nil) {
      fmt.Printf("error %v",error)
   }

   fmt.Printf("%v",mobile)

   fmt.Printf("%v",string(b))
}

func producer(ch chan string) {
   fmt.Println("producer start")
   ch <- "a"
   ch <- "b"
   ch <- "c"
   ch <- "d"
   fmt.Println("producer end")
}

func customer(ch chan string) {
   for {
      msg := <- ch
      fmt.Println(msg)
   }
}

type Person struct{
   Name string
   age int
}

func (p Person) pp() {
   p.Name="1111"
   fmt.Println(p.Name,p.age)
}

全部评论