• Go 基础(非常基础)


     1 // package main 和 main 函数
     2 package main
     3 func main() {}
     4 
     5 //每一个.go文件都需要有 package 关键词,并且声明在文件顶部
     6 package pkgName
     7 
     8 // import 用来导入依赖包
     9 import "name"
    10 
    11 // 常量定义 - const NAME type = value
    12 const NAME string = "xiaoming"
    13 
    14 // 全局变量的定义 - var ...
    15 var name string = "xiaohei"
    16 
    17 // 一般类型声明(定义变量的类型) - type ...
    18 type learn string
    19 
    20 // 声明结构
    21 type Learn struct {
    22   // ...
    23 }
    24 
    25 // 声明接口
    26 type Learn interface
    27 
    28 // 函数的定义
    29 func fn () {}

    package

      package是最基本的分发单位和工程管理中依赖关系的体现;

      源文件开头需要声明package;

      要生成可执行程序,要有package main 和 main函数;

      同一个路径要只能有一个package

    import

     1 // 方式一
     2 import "package1"
     3 import "package2"
     4 import "package3"
     5 
     6 // 方式二
     7 import (
     8   "package1"
     9   "package2"
    10 )

      原理
      import 导入,是按顺序导入;
      导入包中含有其他依赖包,会先导入依赖包,初始化其中的常量和变量,如果有init函数,还会执 行init();

      所有包导入完成后,才会对main中和常量和变量进行初始化,如果main中有init函数,先执行init(),在执行main函数;

      一个包被导入多次,但实际只会导入一次;

      import _ "pkg" 会导入该包,但不会执行整个包,而是执行包中的init函数(简单点说,就是这样做会到时自动执行包的init(),注册包引擎,关于这个包就无需其他操作了);

      import . "pkg" 可以不加包名,直接方法

      别名用法
      import alias "pkg"

    数据类型

      1.  数值类型(整型、浮点型、复数、其他)、字符串类型、布尔类型

      2. 派生类型

          指针类型(Pointer)

          数组类型

          结构化类型(struct)

          Channel类型 (chan) 

          函数类型(func) 

          切片类型(slice)

          借口类型(interface)

          Map类型(map)

      3. 类型零值和类型别名
          类型零值:变量被声明之后的默认值

      不同类型的变量是不能进行运算的

    unsafe包

      unsafe 库让 golang 可以像C语言一样操作计算机内存(不推荐使用此包)

      type ArbitraryType int

      type Pointer *ArbitraryType

      func Sizeof(x ArbitraryType) uintptr

      func Offsetof(x ArbitraryType) uintptr

      func Alignof(x ArbitraryType) uintptr

    常量声明

    // 显式
    const name type = value
    
    // 隐式(无类型常量)
    const name = value
    
    // * 常量只支持数值、布尔、字符串类型

    变量声明

    // 单个声明
    var name [type] = value
    
    // 多个声明
    var a, b, c [type] = v1, v2, v3
    //简写
    a, b := v1, v2
    
    // 分组声明
    var (
      a [type]
      b [type]
      c [type]
    )

    全局变量必须使用var声明 | 特殊变量使用下划线

    类型转换

    // 类型转换必须是显示的
    // 类型转换只能发生在两种兼容类型之间
    var a = 1
    var b float32
    b = float32(a)

    变量可见性规则

      大写字母开头的变量是公有变量,可以被其他包读取

      小写字母开头的变量是私有变量

    流程语句

    // if - else 
    if a > 0 {}
    
    if a > 0 {
       
    } else {
     
    }
    switch name {
      case v1:
        ..
      case v2:
        ..
      default:
        ..
    }
    for init; condition; post {}

    // 待续

  • 相关阅读:
    Calendar日历类
    DateFormat类和SimpleDateFormat类
    Date时间类(java.util.Date)
    时间处理相关类
    不可变和可变字符序列使用陷阱
    String类
    搬圆桌问题
    重温经典之排序 java实现
    i++ 和 ++i
    Intellij Idea 使用技巧 updating
  • 原文地址:https://www.cnblogs.com/fanqshun/p/10042775.html
Copyright © 2020-2023  润新知