(迁移自Gridea)

Hello World

package main
import "fmt
func main() {
    fmt.Println("Hello World")
}

注释

//单行注释
/*
多行注释
*/

标识符

标识符用来命名变量、类型等程序实体。一个标识符实际上就是一个或是多个字母(AZ和az)数字(0~9)、下划线_组成的序列,但是第一个字符必须是字母或下划线而不能是数字。

字符串拼接

fmt.Println("Hello" + " " + "World")

变量声明

//多见于全局变量
var (
    vname1 v_type1
    vname2 v_type2
)
var v type_
var v = v
// :=不应是被声明过的变量
var v1, v2, v3 := v1,v2,v3
var v type_ = v
// v:=v 在函数体内部同样有效

常量声明

const v type_ = v
const v = v
//常量亦可做枚举
const (
    Unknown = 0
    Female = 1
    Male = 2
)
//常量表达式中,函数必须是内置函数,否则编译不过
import "unsafe"
const (
    a = "abc"
    b = len(a)
    c = unsafe.Sizeof(a)
)
// iota
/*
iota
iota,特殊常量,可以认为是一个可以被编译器修改的常量。
iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。
iota 可以被用作枚举值:
*/
const (
    a = iota
    b = iota
    c = iota
)

字符串格式化

// %d 表示整型数字,%s 表示字符串
var stockcode=123
var enddate="2022-03-26"
var url="Code=%d&endDate=%s"
var target_url=fmt.Sprintf(url,stockcode,enddate)
fmt.Println(target_url)
// Code=123&endDate=2022-03-26

数据类型

  • 布尔类型:bool

  • 数字类型:

    • int
      • (u)int8
      • (u)int16
      • (u)int32
      • (u)int64
    • float
      • float32
      • float64
    • complex
      • complex64
      • complex128
    • other
      • byte(like uint8)
      • rune(like int32)
      • uint(32/64)
      • int(32/64)
      • uintptr(储存pointer)
    • 字符串类型:string
    • 派生类型:
      • 指针类型(Pointer)
      • 数组类型
      • 结构化类型(struct)
      • Channel 类型
      • 函数类型
      • 切片类型
      • 接口类型(interface)
      • Map 类型

    运算符

    运算符一览表

  • 算数运算符

    • + 相加
    • - 相减
    • * 相乘
    • / 相除
    • % 取余
    • ++ 自增
    • -- 自减
    • 关系运算符
      • == 检查两个值是否相等,如果相等返回 True 否则返回 False。
      • != 检查两个值是否不相等,如果不相等返回 True 否则返回 False。
      • > 检查左边值是否大于右边值,如果是返回 True 否则返回 False。
      • < 检查左边值是否小于右边值,如果是返回 True 否则返回 False。
      • >= 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。
      • <= 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。
  • 逻辑运算符

    • && 逻辑 AND 运算符。 如果两边的操作数都是 True,则条件 True,否则为 False。
    • || 逻辑 OR 运算符。 如果两边的操作数有一个 True,则条件 True,否则为 False。
    • ! 逻辑 NOT 运算符。 如果条件为 True,则逻辑 NOT 条件 False,否则为 True。
  • 位运算符

    • & 按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与
    • | 按位或运算符"|"是双目运算符。 其功能是参与运算的两数各对应的二进位相或
    • ^ 按位异或运算符"^"是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。
    • << 左移运算符"<<“是双目运算符。左移n位就是乘以2的n次方。 其功能把”<<“左边的运算数的各二进位全部左移若干位,由”<<"右边的数指定移动的位数,高位丢弃,低位补0
    • >> 右移运算符">>“是双目运算符。右移n位就是除以2的n次方。 其功能是把”>>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数
  • 赋值运算符

    • = 简单的赋值运算符,将一个表达式的值赋给一个左值 C = A + B
    • += 相加后再赋值 C += A 等于 C = C + A
    • -= 相减后再赋值 C -= A 等于 C = C - A
    • *= 相乘后再赋值 C *= A 等于 C = C * A
    • /= 相除后再赋值 C /= A 等于 C = C / A
    • %= 求余后再赋值 C %= A 等于 C = C % A
    • <<= 左移后赋值 C <<= 2 等于 C = C << 2
    • >>= 右移后赋值 C >>= 2 等于 C = C >> 2
    • &= 按位与后赋值 C &= 2 等于 C = C & 2
    • ^= 按位异或后赋值 C ^= 2 等于 C = C ^ 2
    • |= 按位或后赋值 C |= 2 等于 C = C | 2
  • 其他运算符

    • &(前缀)返回变量存储地址
    • *(前缀)指针变量

优先级

6 ()
5 * / % << >> & &^
4 + - | ^
3 == != < <= > >=
2 &&
1 ||