You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

7.4 KiB

go语言

执行流程

Go编译器是一行行进行编译的,因此我们一行就写一条语句,不能把多条语句写在同一个,否则报错

转义字符

\t:制表符

\n:换行

\":一个"

\r:回车

fmt包提供格式化,输出,输入函数。

基本语法

使用gofmt进行格式化

(1)

所有的Go文件以package 开头,对于独立运行的执行文件必须是package main;

fmt.Printf("Hello, world; or 世界") 这是说需要将fmt包加入main。不是main的其他包都被称为库,其他许多编程语言有 着类似的概念。

package main 必须首先出现,紧跟着是import。

在 Go 中,package 总是首先出现, 然后是import,然后是其他所有内容。当Go程序在执行的时候,首先调用的函数 是main.main(),这是从C中继承而来。这里定义了这个函数;

Go 同其他语言不同的地方在于变量的类型在变量名的后面。不是:int a,而是a int。 当定义了一个变量,它默认赋值为其类型的null值。这意味着,在var a int后,a的 值为0。而var s string,意味着s被赋值为零长度字符串,也就是""。

(2)

var a int

var b bool

a = 15

b = false


用:= 声明

a := 15

b := false

在左边使用了关键字var声明变量,然后赋值给它。右边的代码使用了:= 使得在一 步内完成了声明和赋值(这一形式只可用在函数内)。在这种情况下,变量的类型是由 值推演出来的。值15表示是int类型,值false告诉Go它的类型应当是bool。多 个var声明可以成组;const和import同样允许这么做。留意圆括号的使用: var ( x int b

Go 语言的字符串连接可以通过 + 实现:

package main
import "fmt"
func main() {
    fmt.Println("Google" + "Runoob")
}
GoogleRunoob

Go 语言中使用 fmt.Sprintffmt.Printf 格式化字符串并赋值给新串:

  • Sprintf 根据格式化参数生成格式化的字符串并返回该字符串。
  • Printf 根据格式化参数生成格式化的字符串并写入标准输出。
概念 Java 对应 Go 派生类型
对象属性 Class (Fields) Struct
动态列表 ArrayList Slice
键值对 HashMap Map
抽象定义 Interface Interface (隐式实现)
内存操作 引用 (Reference) Pointer (显式指针)
多线程通信 BlockingQueue Channel

声明变量的一般形式是使用 var 关键字:

var identifier type

可以一次声明多个变量:

var identifier1, identifier2 type

变量声明

第一种,指定变量类型,如果没有初始化,则变量默认为零值

var v_name v_type
v_name = value

bool 零值为 false

没有初始化就为零值

第二种,根据值自行判定变量类型。

var v_name = value

第三种,如果变量已经使用 var 声明过了,再使用 *:=* 声明变量,就产生编译错误,格式:

v_name := value

例如:

var intVal int 
intVal :=1 // 这时候会产生编译错误,因为 intVal 已经声明,不需要重新声明

直接使用下面的语句即可:

intVal := 1 // 此时不会产生编译错误,因为有声明新的变量,因为 := 是一个声明语句

intVal := 1 相等于:

var intVal int 
intVal =1 
//类型相同多个变量, 非全局变量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3

所有像 int、float、bool 和 string 这些基本类型都属于值类型,使用这些类型的变量直接指向存在内存中的值:

可以通过 &i 来获取变量 i 的内存地址

一个引用类型的变量 r1 存储的是 r1 的值所在的内存地址(数字),或内存地址中第一个字所在的位置。

img

这个内存地址称之为指针,这个指针实际上也被存在另外的某一个值中。

变量的初始化时省略变量的类型而由系统自动推断,声明语句写上 var 关键字其实是显得有些多余了,因此我们可以将它们简写为 a := 50 或 b := false。

go的常量

  • 显式类型定义: const b string = "abc"
  • 隐式类型定义: const b = "abc"

iota,特殊常量,可以认为是一个可以被编译器修改的常量。

iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。

iota 可以被用作枚举值

iota 只能读,不能写:永远不要写 iota = xiota += 1,这是 Go 语法严格禁止的。

const 块内类型一致:同一组 const 里,要么全是数字,要么全是字符串,不能混用。

Go 语言支持的位运算符如下表所示。假定 A 为60,B 为13:

运算符 描述 实例
& 按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。 (A & B) 结果为 12, 二进制为 0000 1100
| 按位或运算符"|"是双目运算符。 其功能是参与运算的两数各对应的二进位相或 (A | B) 结果为 61, 二进制为 0011 1101
^ 按位异或运算符"^"是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。 (A ^ B) 结果为 49, 二进制为 0011 0001
<< 左移运算符"<<"是双目运算符。左移n位就是乘以2的n次方。 其功能把"<<"左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 A << 2 结果为 240 ,二进制为 1111 0000
>> 右移运算符">>"是双目运算符。右移n位就是除以2的n次方。 其功能是把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。 A >> 2 结果为 15 ,二进制为 0000 1111

夺宝奇兵之时空预测:

AI时空共振:

股价不可能一直涨或者跌,时间决定了一切,空间决定了你的收益到底有多大

AI时空共振功能 • 追踪股价运行背后的超级临界点,预判转折位置。 • 适用于所有股票,结合时间和空间分析。 • 以英伟达为例展示功能,识别连续上涨后的临界点。

未来预测技术 • 包含股价预测和时空预测两大内容。 • 提前标注变盘点,如距离下个变盘点5或13个交易日。 • 通过案例验证预测准确性,如高低点与实际走势吻合。 • 结合高阶数据科学与AI技术,逐步完善预测模型。

高低点规律总结 • 高点提前易暴跌,低点提前易暴涨。 • 高点延后易续涨,低点延后易续跌。 • 牛市中低点易提前,高点易延后。 • 熊市中高点易提前,低点易延后。