zoukankan      html  css  js  c++  java
  • go 指南学习笔记

    1、

    短声明变量

    在函数中,`:=` 简洁赋值语句在明确类型的地方,可以用于替代 var 定义。

    函数外的每个语句都必须以关键字开始(`var`、`func`、等等),`:=` 结构不能使用在函数外

    2、

    基本类型

    Go 的基本类型有Basic types

    bool
    
    string
    
    int  int8  int16  int32  int64
    uint uint8 uint16 uint32 uint64 uintptr
    
    byte // uint8 的别名
    
    rune // int32 的别名
         // 代表一个Unicode码
    
    float32 float64
    
    complex64 complex128

    3、

    类型转换

    表达式 T(v) 将值 v 转换为类型 `T`。

    一些关于数值的转换:

    var i int = 42
    var f float64 = float64(i)
    var u uint = uint(f)

    或者,更加简单的形式:

    i := 42
    f := float64(i)
    u := uint(f)

    与 C 不同的是 Go 的在不同类型之间的项目赋值时需要显式转换。

    4、

    常量

    常量的定义与变量类似,只不过使用 const 关键字。

    常量可以是字符、字符串、布尔或数字类型的值。

    常量不能使用 := 语法定义。

    5、switch语句

      os := runtime.GOOS  

    switch os {

      case "darwin":
        fmt.Println("OS X.")
      case "linux":
        fmt.Println("Linux.")
      default:
        fmt.Printf("%s.", os)
    }

    没有条件的 switch

    没有条件的 switch 同 `switch true` 一样。

    这一构造使得可以用更清晰的形式来编写长的 if-then-else 链。

    6、

    defer

    defer 语句会延迟函数的执行直到上层函数返回。

    延迟调用的参数会立刻生成,但是在上层函数返回前函数都不会被调用。

    defer 栈

    延迟的函数调用被压入一个栈中。当函数返回时, 会按照后进先出的顺序调用被延迟的函数调用。

    7、

    1. 不管你的method的receiver是指针类型还是非指针类型,都是可以通过指针/非指针类型进行调用的,编译器会帮你做类型转换。
    2. 在声明一个method的receiver该是指针还是非指针类型时,你需要考虑两方面的内部,第一方面是这个对象本身是不是特别大,如果声明为非指针变量时,调用会产生一次拷贝;第二方面是如果你用指针类型作为receiver,那么你一定要注意,这种指针类型指向的始终是一块内存地址,就算你对其进行了拷贝。熟悉C或者C艹的人这里应该很快能明白。
  • 相关阅读:
    JS模板引擎 :ArtTemplate (2)
    JS模板引擎 :ArtTemplate (1)
    nodeJs 初探 ~
    javascript高级函数
    Js高程笔记->引用类型
    html5离线存储
    (摘抄)HTTP 协议详解
    cordova /phonegap 自定义插件
    phonegap/cordova常用命令
    phonegap上传以及下载图片
  • 原文地址:https://www.cnblogs.com/wsw-seu/p/11260063.html
Copyright © 2011-2022 走看看