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.Sprintf 或 fmt.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 的值所在的内存地址(数字),或内存地址中第一个字所在的位置。
这个内存地址称之为指针,这个指针实际上也被存在另外的某一个值中。
变量的初始化时省略变量的类型而由系统自动推断,声明语句写上 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 = x 或 iota += 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技术,逐步完善预测模型。
高低点规律总结 • 高点提前易暴跌,低点提前易暴涨。 • 高点延后易续涨,低点延后易续跌。 • 牛市中低点易提前,高点易延后。 • 熊市中高点易提前,低点易延后。

