一、GO语法结构
1.示例代码 package main //包声明,必须出现在源文件第一行,指明文件处于哪个包 import "fmt" //引入文件中需要的包文件 func main() { //文件执行入口 //注释格式,同普通C格式 fmt.Println("Hello, World!") //主要代码功能区 } ## 标识符 1)当标识符以 大写字母 开头,则可被外部包访问 2)当标识符以 小写字母 开头,则仅可被内部包访问 ## 注意事项 1)“{”不能单独放在一行,会出现运行时错误 2)文件名与包名并无直接关系,并非需要一致 3)同一个文件夹下的文件只能有一个包名,否则编译报错 4)代码模块每行可以不写分号,当同行有多句代码时需要用分号间隔 2.GO代码的执行 1)go run 文件名 //执行代码 2)go build 文件名 //编译生成二进制文件
二、语言基础语法
1.标记:GO程序由多个标记组成,标记是代码中可以拆解的最小的有意义的单位,如:关键字、标识符、常量、字符串、符号等 如:fmt.Println("Hello, World!") 分解为:fmt . Println ( "Hello, World!" ) 2.行分隔符 1)每行只有一个语句的时候可以不写任何分隔符 2)需同行写多句代码时,需用分号间隔 3.标识符规范 1)由字母、数字、下划线组成 2)第一个字符必须是字母或下划线 3)关键字不能作为标识符 4.字符串 1)字符串:是由双引号括起的一段字符序列 2)转义字符:换行符 \n、回车符 \r、tab键 \t、Unicode字符 \u、反斜杠 \\ 3)字符串拼接:使用“+”或“+=”可以完成字符串拼接 4)字符串是一种值类型,且值不可变,即创建某个文本后你无法再次修改这个文本的内容;更深入地讲,字符串是字节的定长数组。 5.变量 (1)单变量声明 1)指定变量类型不赋值,则变量默认为零(没有初始化时系统默认的值) 如:var name type 各类型零值:数值类型:0、bool:false、字符串:“”、复杂数据类型:指针/数组/字典等:null 2)不指定变量类型,指定初值,根据初值自行判定数据类型 如:var name = value 3)使用“:=”可以声明新的变量,而不用使用var,但对已有变量赋值时会报错 如正确声明: name1 := value //name1从未被定义 如错误声明:var name2 = value2;name2 := value3 ##注意 := 操作符只能用于函数体内部,不能用户全局变量的声明与赋值 (2)多变量声明 1)类型相同的多个变量声明 如: var name1,name2,name3 type; name1,name2,name3=value1,value2,value3 2)类型不同的多个变量声明 如:var(name1 type1;name2 type2……) (3)值类型和引用类型 1)基本数据类型均属于值类型:int、float、bool、string,直接指向内存在内存中的值 a. 可以通过print直接输出变量值:fmt.Println(i) b. 可以通过&获得变量地址:fmt.Println(&i) c. 将一个变量赋给另一个变量时,是对值进行了拷贝赋在了新的内存地址中 6.常量 (1)常量:在程序运行过程中不会被修改的量 如:const name [type] = value 显式类型定义:const b string ="abc" 隐式类型定义:const b = "abc" 1)常量枚举定义 const ( Unknown = 0 Female = 1 Male = 2 ) (2)iota:可以变化的特殊常量,系统自定义 iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。 测试代码
package main
import "fmt"
func main(){
fmt.Println("Hello, World!");
fmt.Println("Hello, World22!")
//转义字符相关
/*fmt.Print("\n")
fmt.Print("\r")
fmt.Print("\t")
fmt.Print("\u")
fmt.Print("\\")
*/
//验证省略var时必须声明全新的变量
//var vname1, vname2, vname3 = "1", "2", "3" // 和 python 很像,不需要显示声明类型,自动推断
//nvname1, nvname2, nvname3 := "1", "2", "3" // 出现在 := 左侧的变量不应该是已经被声明过的,否则会导致编译错误
var i,j int;
i = 1;
j = i;
fmt.Println(i);
fmt.Println(j)
fmt.Println(&i)
fmt.Println(&j)
}