• [学] GO 语言学习笔记(一)


    1. 变量

      var  <名称>   类型

    2. 初始化

      var v1 int  = 10

      v3 := 10    // v3 不可以是已经声明过的变量

    3. 忽略返回值

      _, _, Nick = GetName()

    4. 常量 & iota

      const Pi   float64 = 3.1415

      const (

        size  int64 = 1024

        eof = -1

      )

      const  a, b, c = 3, 5, "XX"

      const (

        v1 = 1 << iota

        v2

        v3

      )    // iota 在下一个 const 之前, 从 0 开始递增

        

    5. os.GetEnv("HOME")

    6.大写开头,包外可见

    7. uintptr

      浮点比较 -- 使用精度差

    8. 复数

      v = Complex(3.1, 3.2)

      real(v) == 3.1

      imag(v) == 3.2

    9.字符串,不能以 [x] 的方式赋值

    10. 字符串类型

      byte   --- uint8

      rune  ---- Unicode 字符

    11. 数组声明

      var   array_ex   [32]byte  =  [32]byte { 1, 2, ... }

      len()

      为值类型,在 fun 内部修改,不影响 fun 外部值

    12. 数组切片

      var  myS  []int  = array_ex[:5]

      var  mySl = make([]int, 5)

      mySli := []int{1, 2, 3}

    13. len / cap / append

      len(slice) = 元素个数

      cap(slice) = 已经分配的内存

      .append()

      myS = append(myS, 1, 2, 3)

      myS2 := []int{8, 9, 10}

      myS3 = append(myS, myS2...)    /// 打散 myS2 , 以多个元素加入  , append 参数需求

    14.copy()

      copy(s1, s2)    // 以较小者来决定复制的大小

    15.

      map

      var personDB  map[string] PersonInfo

      personDB = make(map[string] PersonInfo)

      personDB["123"] = PersonInfo{"123", "Tom", "Room 203"}

      

      person, ok := personDB["123"]

      if ok XXX

      myMap = make(map[string] PersonInfo, 100)

      delete(myMap, "123")

    16. 

      if  return else return 

      需要一个最终的 return

    17. fallthrough

      switch  X  {

        case 0:

        ....

        fallthrough   // 继续 case 

        default:

      }

    18. for { 无限循环

      没有 while 语句

    19.  goto

    20. 函数

      func  <func-name>  (var ...)  (ret ...) { ...

    21. 不定参数

      func  myFunc(args  ...int)  {

        for  _, arg  :=  range  args {

        }

      }

      调用

      myFun ( [] int {1, 2, 3, 5} )

      参数传递:

        fun  A ( args  ...int) {

          B(args...)

          C(args[1:]...)

        }

    22. 任意类型

      func  Printf(format string,  args  ...interface{}) {

      func  MyPrint ( args  ...interface {} ) {

        for  _, arg  :=  range  args {

          switch   arg.(type)  {

            case  int:

            case  string:

            default:

          }

        }

      }

    23. 多返回值

      携带 Error

      _ : 忽略返回值

    24. 匿名函数

      f := func (  a, b  int,  z  float64)  bool { 

      }

      func  ( ch  chan  int)  {

        ch <- ACK

      }( reply_chan)

    25. 闭包

      func   main() { 

        var j  int  = 5

        a :=  func( ) ( func() ) {  // 参数为空,返回值为一个函数

          var  i  int  = 10

          return  fun()  {

          } ()

        }

        a ()

        j *= 2

        a ()

    26. errno

    27.  defer  fun ()  { // 做复杂的清理工作

        // 无论怎样都会被调用

    28.  panic ()    recover()

      panic () 立即终止,返回调用 , defer 会被调用

      recover()  处理 panic 异常

        defer  func() {

          if   r := recover(); r != nil {

            log.Printf("Return : %v", r)

          } ( )

        }

    29. flag 包   : 命令行参数解析

      X = flag.String(" ... ")

      flag.Parse()    // 在 main 里调用, 参数解析到的值到  X 里

      

    30. file, err  := os.Open(  )

      defer  file.Close()

      values = make( []int, 0)

      for  {

        line, isPrefix, err1 := br.ReadLine()

          err1 != nil;  err1 != io.EOF

      }

      str := string(line)

      value, err1 := strconv.Atoi(str)

      if err1 != nil ...

        values = append(values, value)

    31. func  writeValues( values  [] int,  outfile  string)

      file, err  := os.Create( outfile )

      str := strconv.Itoa( value)

    32. file, err := os.Open(infile)

      defer  file.Close()

      br := bufio.NewReader(file)

      line, isPrefix, err1 := br.ReadLine()

          err1 != nil, err1 != io.EOF

      t1 := time.Now()

  • 相关阅读:
    变量的作用域
    内联函数inline
    数组、函数和指针
    关于android:configChanges的属性的简介
    Android 更新UI的两种方法
    android开发两种退出程序方式
    google内购In-App Billing
    谷歌登陆sdk对接
    openssl测试版本小工具
    关于facebook登陆不安装openssl的情况下怎么获得Facebook Key Hash的简单方法
  • 原文地址:https://www.cnblogs.com/YBhello/p/5929680.html
Copyright © 2020-2023  润新知